函数、文件操作实现数据增删改查---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


wKiom1lwXJ3TBOCzAACNkKhBkTI865.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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)
本文转自lyndon博客51CTO博客,原文链接http://blog.51cto.com/lyndon/1949364如需转载请自行联系原作者                          迟到的栋子
相关文章
|
5月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
3月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
3月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
130 11
|
4月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
8月前
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
776 4
|
7月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
704 77
|
4月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
424 0
|
6月前
|
存储 SQL Java
数据存储使用文件还是数据库,哪个更合适?
数据库和文件系统各有优劣:数据库读写性能较低、结构 rigid,但具备计算能力和数据一致性保障;文件系统灵活易管理、读写高效,但缺乏计算能力且无法保证一致性。针对仅需高效存储与灵活管理的场景,文件系统更优,但其计算短板可通过开源工具 SPL(Structured Process Language)弥补。SPL 提供独立计算语法及高性能文件格式(如集文件、组表),支持复杂计算与多源混合查询,甚至可替代数据仓库。此外,SPL 易集成、支持热切换,大幅提升开发运维效率,是后数据库时代文件存储的理想补充方案。

热门文章

最新文章