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语句 ...
随机推荐
- 在Linux命令行里与其他用户通信
大家好,我是良许 在 Linux 命令行里向其他用户发送信息很简单,很多命令都可以做到这点,麻烦的是你需要从众多命令中挑选一个合适的命令来使用.因此,我挑选了四种常用的 Linux 用户通信命令分享给 ...
- pwnable.kr之bof
打开题目: 先下载题目给我们的两个文件,查看文件信息: 发现没有执行的权限,所以先增加文件bof的执行权限,执行: 没发现啥,然后查看代码, #include <stdio.h> #inc ...
- java集合类源码学习三——ArrayList
ArrayList无疑是java集合类中的一个巨头,而且或许是使用最多的集合类.ArrayList继承自AbstractList抽象类,实现了List<E>, RandomAccess, ...
- python格式化输出当前时间
import time def get_now_time(): now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.tim ...
- VMware参数disk.EnableUUID生效扫描不出来UUID
问题描述:搭建RAC中的共享磁盘,在一个节点上部署磁盘,另一个节点加入共享磁盘,使用扫描UUID的方法,但是莫名其妙一直扫描不出来UUID,使用了各种各样的方法,一个星期时间接近崩溃,又搞了一下午的测 ...
- 最优得分 score
Solution: 一道很典型的dp题目, 对于 20% 的数据(Bi=0),直接使用01背包即可. 对于 100% 的数据,我们需要进行分析,当我们对 …a,b… 和 …b,a… (…表示的是相同的 ...
- Jmeter测试工具
jmeter的简单应用 目录 jmeter的简单应用 1.Jmeter 的基本概念 2.我们 为什么 使用 Jmeter 3.Jmeter的作用 4.Jmeter怎么用 5.安装JAVA环境 6.Jm ...
- matlab外部程序接口-excel
在excel中使用matlab 内容: 1.Spreadsheet Link 程序 安装与启动 1 打开excle->文件->选项 2.加载项->转到 3.浏览(可用加载宏,本来没有 ...
- golang 协程学习
协程数据传递问题 func TestGoroutineData(t *testing.T) { var wg sync.WaitGroup wg.Add(1) i := 0 go func(j int ...
- 3.Scala语法01 - 基础语法