day26 Pyhton select功能语句实现
一.查询语句功能实现
select id,name where age > '20'
name_value = {'id':0,'name':1,'age':2,'phone':3,'job':4}
sql = 'select id,name where age > 20'#sql = input('>>>').strip() def format_sql(sql):
sql = sql.replace('select', '') # 'select name , age where age > 20' 替换select为空
sql = sql.replace(' ', '') # 'name,agewhereage>20' 去掉空格
col, con = sql.split('where') # col = 'name,age',con = 'age>20' 以where切割,得到两个参数
if '*' in col:
col_lst = name_value.keys() #'*'代表所有的key值'id,'name','age,phone,'job
else:
col_lst = col.split(',') # col_lst = ['name','age'] 得到name,age
return col_lst,con # col_lst = ['name','age'] con = 'age>20' def read_file():#遍历文件里的内容
with open('userinfo', encoding='utf-8') as f:
for line in f:
line_lst = line.strip().split(',')
yield line_lst#返回一行内容 def show(con,col_l,symbol,condition):#con = age>20 col_l = ['name' ,symbo为l条件比较符号为>,condition为'int(con_value) < int(line_lst[num])
con_name, con_value = con.split(symbol) # con_name = 'age',con_value = 20 以条件比较符号>进行切割
for line_lst in read_file():#调用read_file()生成器函数
num = name_value[con_name] #age的值是2 num = 2
if eval(condition):#eval使字符串里的代码运行 int(con_value) < int(line_lst[num]
for col in col_l: # ['name','age']
print(line_lst[name_value[col]], end=' ')
#name_value[col]为2,3,取出line_lst列表索引为2,3的值
print() def select(sql):
# sql = 'select name,age where age>20'
col_l, con = format_sql(sql) # 调用format_sql函数 col_l = ['name', 'age'],con = age>20
if '>' in con:#判断比较符号是什么
show(con,col_l,'>','int(con_value) < int(line_lst[num])')#调用show()函数,
if '<' in con:
show(con, col_l, '<', 'int(con_value) > int(line_lst[num])')
if '=' in con:
show(con, col_l, '=', 'con_value == line_lst[num]')
if 'like' in con:
show(con, col_l, 'like', 'con_value in line_lst[num]') # 先判断一下是否是查操作
if sql.startswith('select'):
# 是查找操作
select(sql)#调用select函数
else:
print('是其他操作')
class Base:
def __init__(self):
self.func()
def func(self):
print('in base') class Son(Base):
def func(self):
print('in son')#in son s = Son()
day26 Pyhton select功能语句实现的更多相关文章
- Oracle【select from 语句】
Oracle[select from 语句] 1.select基本功能介绍1)投影操作:结果集是源表中的部分“列”2)选择操作:结果集是源表中的部分“行”3)选择操作+投影操作:结果集是源表中的部分 ...
- SQL UNION 和 UNION ALL 操作符\SQL SELECT INTO 语句\SQL CREATE DATABASE 语句
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- SQL SELECT INTO 语句
SQL SELECT INTO 语句可用于创建表的备份复件. SELECT INTO 语句 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用 ...
- mysql下的SELECT INTO语句
在mysql下使用SELECT INTO语句会产生ERROR 1327 (42000): Undeclared variable:new_tablename 此时要使用: CREATE TABLE C ...
- 【转载】 Sqlserver中通过Select Into语句快速单表备份
在Sqlserver数据库中,备份数据的方式有很多种,可以使用整个数据库备份,也可使用导出包含数据和架构的脚本文件的方式来进行单表或多表数据的备份,其实还有一种Select Into的方式可以快速备份 ...
- SQL SELECT DISTINCT 语句
SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...
- 翻译:SELECT INTO语句(已提交到MariaDB官方手册)
本文为mariadb官方手册:SELECT INTO的译文. 原文:https://mariadb.com/kb/en/selectinto/我提交到MariaDB官方手册的译文:https://ma ...
- create table 使用select查询语句创建表的方法分享
转自:http://www.maomao365.com/?p=6642 摘要:下文讲述使用select查询语句建立新的数据表的方法分享 ---1 mysql create table `新数据表名` ...
- MySQL存储过程中使用SELECT …INTO语句为变量赋值
使用SELECT …INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT …INTO语句 ...
随机推荐
- Java数组实现随机生成N-M之间不重复的随机数
接收一个整形数组,使用Math.Random每次在规定的数字范围内随机产生数字,然后嵌套for循环依次判断是否有重复值,如果有既外循环变量减一,直到把数组装满为止. /** * 随机生成 N--M的不 ...
- pyhton:操作redis
一.redis介绍 redis是一种非关系型数据库:没有表结构,没有字段,没有sql语句.只是用get获取数据,set插数据,类似字典.比如mangodb,redis redis的数据全存在内存,re ...
- json模块:json.dumps()、json.loads()、json.dump()、json.load()
json.dumps().json.loads().json.dump().json.load() 4个方法的总结和使用: 注意:存在文件里面的东西,读出来都是字符串 import json 1.js ...
- [极客大挑战 2019]Havefun wp
很少见的很简单的一道题 查看源代码 获得一段被注释的代码 直接?cat=dog即可得flag
- 智慧出行--maas
未来智慧出行新生态——MaaS系统的解读与畅想 -城市交通:观察与思考 - 未来智慧出行新生态——MaaS系统的解读与畅想 在货运领域,有一种承运方式叫“多式联运”,它是由承运人与货主签订一份货运合同 ...
- 关于swagger
转自https://blog.csdn.net/sanyaoxu_2/article/details/80555328 1:认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述. ...
- hystrix总结之多返回值命令
继承HystrixCommand实现run方法的命令只能返回单一值,Hystrix也提供了方式可以让我返回一个Observable结果,然后持续监听运行结果. 继承HystrixObservableC ...
- 1.Concurrent概述
- 2.Strom-入门案例
- 预科班D11
2020.09.21星期一 预科班D11 学习内容: 一.基本数据类型及内置方法 1.整形int及浮点型float + - * / // ** % > < >= <= 2.字符 ...