column_dic = {"id": 0, "name": 1, "age": 2, "phone": 3, "job": 4}

def get_show_list(col_condition): # "select age,name"
"""
获取要展示的列名
:param col_condition: 用户输入的select条件
:return: 列名组成的列表
"""
col_info_list = col_condition.strip().split("select") # ["", "age,name"]
col_info_list = [col_info_item for col_info_item in col_info_list if col_info_item.strip()] # ["age,name"]
if col_info_list:
col_info = col_info_list[0].strip() # "age,name"
if "*" in col_info:
return column_dic.keys()
elif col_info:
ret = col_info.split(",") # [" age ","name"]
return [item.strip() for item in ret] # ["age","name"]
else:
print(col_info) def filter_handler(operate, con): # ">" , "age>22"
selected_list = []
col, val = con.split(operate)
col = col.strip()
val = val.strip()
judge = "int(line_list[column_dic[col]]) %s int(val)" % operate if operate == "<" or operate == ">" \
else "line_list[column_dic[col]] %s val" % operate
f = open("student", encoding="utf-8")
for line in f:
line_list = line.strip().split(",")
if eval(judge):
selected_list.append(line_list)
f.close()
return selected_list def get_selected_line(con): # con = "age>22"
"""
获取要查找的行,并将每一行作为列表项存储到selected_list
:param con:
:return:
"""
if ">" in con:
selected_list = filter_handler(">", con)
elif "<" in con:
selected_list = filter_handler("<", con)
elif "=" in con:
selected_list = filter_handler("==", con.replace("=", '=='))
elif "like" in con:
selected_list = filter_handler("in", con)
return selected_list def show(selected_list, show_list):
for selected_item in selected_list:
for col in show_list:
print(selected_item[column_dic[col]], end=" ")
print() condition = input(">>>") # "select age,name where age>22"
ret = condition.split('where') # ["select age,name", "age>22"]
con = ret[1].strip() # "age>22"
show_list = get_show_list(ret[0]) # ["name", "age"]
selected_list = get_selected_line(con)
show(selected_list, show_list)

  

python实现数据库增删改查的更多相关文章

  1. 练习 python之数据库增删改查

    # 文件存储时可以这样表示 ## id,name,age,phone,dept,enroll_date# 1,Alex Li,22,13651054608,IT,2013-04-01# 2,Jack ...

  2. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  3. Python实现mysql数据库增删改查

    利用python操作mysql数据库用法简单,环境配置容易,本文将实现对库增.删.改.查的简易封装!   1. 环境配置 安装第三方包  ,导入模块 mysql.connector  pip inst ...

  4. 数据库学习之数据库增删改查(另外解决Mysql在linux下不能插入中文的问题)(二)

    数据库增删改查 增加 首先我们创建一个数据库user,然后创建一张表employee create table employee( id int primary key auto_increment, ...

  5. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  6. 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查

    一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...

  7. go——beego的数据库增删改查

    一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...

  8. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  9. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

随机推荐

  1. Python里seed()函数

    seed()函数的功功能是每次改变随机数生成器的种子,会改变下一次随机数模块生成的随机数.seed()方法在每次调用随机函数之前使用. 如果种子不变,那么随机函数生成的随机数相同,例如: #!/usr ...

  2. python多版本共存问题

    1.环境变量配置,pip路径别忘记加入,否则pip不好使. 2.如果改名python.exe为其他名字,复制一份保留,否则pip容易无法启动进程 参见爆栈: http://stackoverflow. ...

  3. CPU位数、地址线位数、数据线位数、通用寄存器位数!

    CPU位数:表示的是其通用寄存器的位数,CPU的位数表示该CPU一次处理数据的最大位数. 数据线位数:是CPU的理论最大寻址空间,也是CPU与内存之间一次最大的数据传输位数. 地址线位数:是CPU实际 ...

  4. join sql图

    SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name   id  name       id   name --  - ...

  5. parseInt(string, radix)

    参数 描述 string 必需.要被解析的字符串. radix 可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间. 如果省略该参数或其值为 0,则数字将以 10 为基础来解析.如果它以 “0 ...

  6. swift学习之UITabelView ----使用xib定义cell

    // //  TwoViewController.swift //  tab // //  Created by su on 15/12/7. //  Copyright © 2015年 tian. ...

  7. python使用smtplib和email发送腾讯企业邮箱邮件

    公司每天要发送日报,最近没事搞了一下如何自动发邮件,用的是腾讯企业邮箱,跟大家分享一下我的研究过程吧. 以前弄的发邮件的是用qq邮箱发的,当时在网上查资料最后达到了能发图片,网页,自定义收件人展示,主 ...

  8. Codeforces 768A Oath of the Night's Watch 2017-02-21 22:13 39人阅读 评论(0) 收藏

    A. Oath of the Night's Watch time limit per test 2 seconds memory limit per test 256 megabytes input ...

  9. java成长之路-开篇

    一,为了生活 从业7年,主要还是运用.net过日子.今儿下决心再次准备学习java并想达到一定高度,也还是想以后能主要用java赚钱过日子.抱歉眼界所到,平均情况下,java平台的收入还是比.net的 ...

  10. NideShop项目的安装部署教程

    本文档为微信小程序商城NideShop项目的安装部署教程,欢迎star NideShop商城api服务:https://github.com/tumobi/nideshop NideShop微信小程序 ...