函数、文件操作实现数据增删改查---low版本

首先说明这个脚本很low,目前水平有限,只能实现使用固定的语法对数据进行增删改查。但是现在脚本不low,怎么让明年的我来嘲笑今年的自己

需求
   a.可进行模糊查询,语法至少支持下面3种:
   select name,age from staff_table where age > 22
   select  * from staff_table where dept = "IT"
     select  * from staff_table where enroll_date like "2013"
     查到的信息,打印后,最后面还要显示查到的条数

   b.可创建新员工纪录,以phone做唯一键,staff_id需自增,语法如下:
     insert lyndon 24 13811688803 OP 20017-07-01

   c.可删除指定员工信息纪录,输入员工id,即可删除,语法如下:
     delete 删除序号(1-4)

   d.可修改员工信息,语法如下:
     UPDATE staff_table SET dept="Market" WHERE where dept = "IT"

    注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码!
3、测试信息
1,Alex Li,22,13651054608,IT,2013-04-01
2,Jack Wang,30,13304320533,HR,2015-05-03
3,Rain Liu,25,1383235322,Sales,2016-04-22
4,Mack Cao,40,1356145343,HR,2009-03-01

def mem():
    print(‘‘‘
    ---------------------------使用说明------------------------------
    查询语法:
    select name,age from staff_table where age > 22
  select  * from staff_table where dept = "IT"
    select  * from staff_table where enroll_date like "2013"
    创建语法:
    insert lyndon 24 13811688803 OP 20017-07-01
    删除语法:
    delete 序号(序号初始范围1-4)
    修改语法:
    UPDATE staff_table SET dept="Market" WHERE where dept = "IT"
    -----------------水平有限,只能满足以上语法----------------------
    【exit】      退出
    ‘‘‘)

def check_sql(sql):
    parse_sql={
        ‘insert‘:insert,
        ‘delete‘:delete,
        ‘update‘:update,
        ‘select‘:select
    }
    sql_l=sql.split(‘ ‘)
    func=sql_l[0]
    res=‘‘
    if func in parse_sql:
        res=parse_sql[func](sql_l)
    return res
    # print(sql_l)
def select(sql_l):      #[‘select‘, ‘name,age‘, ‘from‘, ‘staff_table‘, ‘where‘, ‘age‘, ‘>‘, ‘22‘]
    count=0
    if ‘age‘ in sql_l:
        with open(‘info.txt‘,‘r‘,encoding=‘utf-8‘) as f_read:
            for line in f_read:
                info_l=line.split(‘,‘)
                if int(info_l[2]) > 22:
                    count+=1
                    print(line)
    if ‘dept‘ in sql_l:
        with open(‘info.txt‘,‘r‘,encoding=‘utf-8‘) as f_read:
            for line in f_read:
                info_l=line.split(‘,‘)
                if info_l[4] == ‘IT‘:
                    count+=1
                    print(line)
    if ‘like‘ in sql_l:
        with open(‘info.txt‘,‘r‘,encoding=‘utf-8‘) as f_read:
            for line in f_read:
                info_l=line.split(‘,‘)
                if info_l[-1].split(‘-‘)[0] == ‘2013‘:
                    count += 1
                    print(line)
    print(‘共查询到 %s 条信息‘ %count)

def update(sql_l):      #[‘update‘, ‘staff_table‘, ‘set‘, ‘dept="market"‘, ‘where‘, ‘where‘, ‘dept‘, ‘=‘, ‘"it"‘]
    with open(‘info.txt‘, ‘r+‘, encoding=‘utf-8‘) as f_read:
        lines=f_read.readlines()
    with open(‘info.txt‘,‘w‘,encoding=‘utf-8‘) as f_write:
        for line in lines:
            if ‘IT‘ in line:
                line=line.replace(‘IT‘,‘Market‘,1)
                print(‘信息已更新 %s‘ %line)
            f_write.write(line)
def delete(sql_l):
    import os
    with open(‘info.txt‘, ‘r‘, encoding=‘utf-8‘) as f_read,            open(‘.info.swap.txt‘,‘w+‘,encoding=‘utf-8‘) as f_write:
        for line in f_read:
            info_l = line.split(‘,‘)
            if sql_l[1] == info_l[0] :
                print(‘%s 此信息已删除‘ %line)
            else:
                f_write.write(line)
    os.remove(‘info.txt‘)
    os.rename(‘.info.swap.txt‘,‘info.txt‘)
def insert(sql_l):      #[‘insert‘, ‘lyndon‘, ‘24‘, ‘13811688803‘, ‘op‘, ‘20017-07-01‘]
    phone=[]
    with open(‘info.txt‘, ‘r‘, encoding=‘utf-8‘) as f_read:
        for line in f_read:
            info_l = line.split(‘,‘)
            count=int(info_l[0])
            phone.append(info_l[3])
    if sql_l[3] not in phone:
        count+=1
        sql_l[0]=str(count)
        string=‘,‘.join(sql_l)
        with open(‘info.txt‘, ‘a‘, encoding=‘utf-8‘) as f:
            f.write(‘\n‘+string)
            print(‘%s 信息已插入‘ %string)
    else:
        print(‘此信息已存在‘)
while True:
    print(‘输入help查看帮助‘)
    sql=input(‘sql>>>‘).strip().lower()
    if len(sql) == 0:continue
    if sql == ‘exit‘:break
    if sql == ‘help‘:
        mem()
    im=check_sql(sql)
时间: 2024-10-05 00:26:26

函数、文件操作实现数据增删改查---low版本的相关文章

Salesforce零基础(三)简单的数据增删改查页面的构建(Ajax样式)

VisualForce封装了很多的标签用来进行页面设计 下面以一个单一的表进行数据增删改查.表结构如图1所示.通过图可以看出GOODS表自己定义的参数主要包括以下: GoodsName__c,GoodsType__c,GoodsBrand__c,GoodsDescribe__c,GoodsPrice__c. 图1 VF每个页面都是以<apex:page>标签起始</apex:page>结束,每个VF页面都有一个Controller用来控制其业务逻辑.本篇例子中主要用到的控件包括如下

三种方式实现数据增删改查

原生form实现   forms组件实现   modelform组件实现 用原生form实现页面数据增删改查 前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>书籍列表</title> </head> <body> <a href="/book/add&qu

flex 操作xml 实现增删改查 .

一 在介绍Flex中操作XML之前,首先简单介绍下XML中的基本术语. 元素:XML中拥有开始标签和结束标签的这一块称为“元素”    节点:把XML元素与文本结合起来统称为节点    根节点:位于整个XML文当顶端的节点    文本节点:包含文本的节点    属性:元素的组成部分,以键/值形式放在元素标签内 用一个例子来说明 view plaincopy to clipboardprint?<root_node><!--这是一个根节点也是一个元素-->            &l

基于Java的XML文件模拟数据库进行增删改查操作

我们知道XML文件既可以用来进行数据的传输,也可以配合DTD约束文件用来作为配置文件,当然其本质就是一个加了标签以及众多空格保持格式的字符串,那么就可以用Java进行操作. 本例是使用MyEclipse带入DOM4j解析时要用的jar包的基础上做的:当然DOM4j相对于DOM SAX 等解析方式的方便程度是不言而喻的. 下面是本次用例XML文件 <?xml version="1.0" encoding="UTF-8"?> <persons> 

C#在winform中操作数据库,实现数据增删改查

1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本的数据操作,增删改查这几个操作. (1)先定义一个数据库操作的公共类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks

C#通过窗体应用程序操作数据库(增删改查)

为了体现面向对象的思想,我们把"增删改查"这些函数封装到一个数据库操作类里:   为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据. 首先,建立程序的主窗体 ㈠添加数据 当点击"增加",弹出一个子窗体,通过子窗体往数据库中添加一条数据 private void button1_Click(object sender, EventArgs e) { Form5 insert= new Form5();

Java数据库连接——JDBC基础知识(操作数据库:增删改查)

一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库.比如建立数据库连接.执行SQL语句进行数据的存取操作. JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创

Java操作数据库实现&quot;增删改查&quot;

本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动之间建立连接,DriverManager类中的方法都是静态方法,下列是DriverManager的常用方法: getConnection(String URL,String user,String

jeesite应用实战(数据增删改查)

jeesite配置指南(官方文档有坑,我把坑填了!)这篇文章里,我主要把jeesite官方给出的帮助文档的坑填了,按照里面的方法可以搭建起来jeesite的站点.系统可以运行以后,就可以进入开发模块了,我们先从数据的增删改查做起. 一.页面效果 很简单,涉及到的就是数据的增删改查. 二.如何利用jeesite做呢? 上面我们也看到了,功能很简单,那么怎么利用jeesite做呢?jeesite能给我们提供什么便利呢? 第一步.建表 利用jeesite之前,要先建数据表. 至于怎么建表,方法太多了,