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审计之XSS篇
Java审计之XSS篇 0x00 前言 继续 学习一波Java审计的XSS漏洞的产生过程和代码. 0x01 Java 中XSS漏洞代码分析 xss原理 xss产生过程: 后台未对用户输入进行检查或过滤 ...
- oracle之三rman 备份
rman 备份 7.1 归档方式下rman备份常用语法: 7.1.1 backup 备份 1)备份全库:1.1 RMAN> backup database format='/u01/myrman ...
- 第24课 - #pragma 使用分析
第24课 - #pragma 使用分析 1. #pragma简介 (1)#pragma 是一条预处理器指令 (2)#pragma 指令比较依赖于具体的编译器,在不同的编译器之间不具有可移植性,表现为两 ...
- [程序员代码面试指南]递归和动态规划-换钱的最少货币数(DP,完全背包)
题目描述 给定arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的最少货币数. 解题思路 dp[i][j]表示只用第0 ...
- Docker部署ElasticSearch以及使用
ElasticSearch笔记 1. ElasticSearch前期 1.1 聊聊ElasticSearch的简介 Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引 ...
- tkMybatis和Mybatis Generator的结合使用
tkMybatis配置 tkmybatis是基于Mybatis框架开发的一个工具,通过调用它提供的方法实现对单表的数据操作,以免写任何sql语句. tkMybatis通常与Mybatis以及Mybat ...
- Shiro框架--将Shrio的session改成HTTPSession数据
重写 FormAuthenticationFilter类 的 onLoginSuccess()方法即可 import javax.servlet.ServletRequest; import java ...
- 项目升级springboot2.0注意事项
一.pring boot 2.0以后, springboot jpa findById 返回类型变化@NoRepositoryBeanpublic interface CrudRepository&l ...
- pandas读取MySql/SqlServer数据
用过的东西总是会忘记,尤其是细节,还是记下来比较靠谱. 读取MySql数据 1 import MySQLdb 2 import pandas as pd 3 4 conn = MySQLdb.conn ...
- java安全编码指南之:敏感类的拷贝
目录 简介 一个简单的SensitiveObject SensitiveObject的限制 对SensitiveObject的攻击 解决办法 简介 一般来说class中如果包含了私有的或者敏感的数据的 ...