python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法
这个工具类十分简单和简洁。
sql拼接方法
# encoding=utf-8
from django.http import HttpResponse
from anyjson import serialize
from django.http import HttpResponse
from anyjson import serialize
import MySQLdb
def safe(s):
return MySQLdb.escape_string(s)
def get_i_sql(table, dict):
'''
生成insert的sql语句
@table,插入记录的表名
@dict,插入的数据,字典
'''
sql = 'insert into %s set ' % table
sql += dict_2_str(dict)
return sql
def get_s_sql(table, keys, conditions, isdistinct=0):
'''
生成select的sql语句
@table,查询记录的表名
@key,需要查询的字段
@conditions,插入的数据,字典
@isdistinct,查询的数据是否不重复
'''
if isdistinct:
sql = 'select distinct %s ' % ",".join(keys)
else:
sql = 'select %s ' % ",".join(keys)
sql += ' from %s ' % table
if conditions:
sql += ' where %s ' % dict_2_str_and(conditions)
return sql
def get_u_sql(table, value, conditions):
'''
生成update的sql语句
@table,查询记录的表名
@value,dict,需要更新的字段
@conditions,插入的数据,字典
'''
sql = 'update %s set ' % table
sql += dict_2_str(value)
if conditions:
sql += ' where %s ' % dict_2_str_and(conditions)
return sql
def get_d_sql(table, conditions):
'''
生成detele的sql语句
@table,查询记录的表名
@conditions,插入的数据,字典
'''
sql = 'delete from %s ' % table
if conditions:
sql += ' where %s ' % dict_2_str_and(conditions)
return sql
def dict_2_str(dictin):
'''
将字典变成,key='value',key='value' 的形式
'''
tmplist = []
for k, v in dictin.items():
tmp = "%s='%s'" % (str(k), safe(str(v)))
tmplist.append(' ' + tmp + ' ')
return ','.join(tmplist)
def dict_2_str_and(dictin):
'''
将字典变成,key='value' and key='value'的形式
'''
tmplist = []
for k, v in dictin.items():
tmp = "%s='%s'" % (str(k), safe(str(v)))
tmplist.append(' ' + tmp + ' ')
return ' and '.join(tmplist)
数据库连接类
class SqlConn():
def __init__(self):
self.conn= DBpool.pool.connection()
self.cur=self.conn.cursor()
def cur(self):
return self.cur()
def commit(self):
self.conn.commit()
def execute(self,sql,fetchone=0):
self.cur.execute(sql)
return self.cur.fetchone() if fetchone else self.cur.fetchall()
def last_id(self,table):
sql='SELECT LAST_INSERT_ID() from %s'%table
return self.execute(sql,1)[0]
def close(self):
self.cur.close()
self.conn.close()
self.conn= DBpool.pool.connection()
中,我用的是连接池连接,这里可以改成普通的数据库连接
查询结果解析方法
def fSqlResult(r,key_list):
#r @tuple 数据库fetchall的结果
#key_list @list 查询字段的keys
# format SQL Result 格式化数据库查询的结果,转化成包含多个字典的列表格式,即((1,2),(3,4))->[{"key1":1,"key2":2},{"key1":3,"key2":4}]
#返回 @dict 查询结果
mlist=[]
l=len(key_list)
if r:
for item in r:
tmp={}
for i in range(l):
tmp[key_list[i]]=str(item[i])
mlist.append(tmp)
return mlist
使用方法:
例如要执行sql语句:select username,pwd,type,age,birth from user where username='abc';
conn=SqlConn()
key_list=['username','pwd','type','age','birth']
sql=s_sql('user',key_list,{'username':'abc'}
r=conn.execute(sql)
data=fSqlResult(r,key_list)
conn.close()
data的格式为[{'username':'i am username','pwd':'i am pwd','type':'student','age':12,'birth':'2014-7-2'}]
方便快捷,适用于经常需要用到数据库的CRUD连接的应用。
python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法相关推荐
- python代码规范方面的书_你写的Python代码规范吗?
# 不建议这样importpandas,numpy 且导入模块的代码总是位于代码的最开始部分,在模块注释和文档字符串之后,在模块的全局变量与常量之前. 2.8命名规范 在 Python 里面会涉及到很 ...
- python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数
跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...
- python赋值语句的一般格式为_[零基础学Python]赋值,简单也不简单
变量命名 在<初识永远强大的函数>一文中,有一节专门讨论"取名字的学问",就是有关变量名称的问题,本温故而知新的原则,这里要复习: 名称格式:(下划线或者字母)+(任意 ...
- python在建筑施工方面的应用_有哪些关于 Python 在建筑中的应用和教程?
2018.02.09更新 (發現距離上一次更新馬上就要兩年了--) 嗯,兩年間發生了很多事.我也莫名其妙跑到ETH來了. 做起了Fab的優化,python已經完全不能滿足效率和複雜度的要求,走上了C+ ...
- python基于水色图像的水质评价_零基础学习Python的学习路线及教程
什么是Python? 在过去的2017年里,Python开发者在全球快速增长,国内小伙伴学习 Python 的热情一路高涨.同时,PYPL发布7月编程语言指数榜,Python 在今年5月首次超越 Ja ...
- 利用python爬取知乎评论_一个简单的python爬虫,爬取知乎
一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: 1 # -*- c ...
- python语言程序设计基础上海交通大学_北京交通大学:Python语言程序设计
『课程目录』:$ y0 q8 G3 Q" Z% p6 K│ ├─第一章概述, c) e/ m) X# s- B, r│ │ 1.1.1第1课时计算机起源 – 计算机发展史中三位里程碑人物,快 ...
- 自己写的Python数据库连接类和sql语句拼接方法
这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...
- python能做出什么样的网站_我能用Python做什么?
如果你想学Python,或者你刚开始学习Python,那么你可能会问:"我能用Python做什么?" 这个问题不好回答,因为Python有很多用途. 但是随着时间,我发现有Pyth ...
最新文章
- spring对session和事务的管理以及OpenSessionInViewFilter是如何工作
- 将整型字符串转成整数值
- 通过Erlang构建TCP服务器
- 硬件——STM32 , 录音
- Java Websocket实例
- 信息安全系统设计基础第十一周 20135218 姬梦馨
- 一道小学数学题引发的“纷争” 产科医生给出解答
- 多实例多进程网络编程PHP,php socket网络编程基础知识(四):多进程
- centos7下memcached的安装配置
- 从头到尾谈一下HTTPS
- python语言检测模块langid、langdetect使用
- 浅谈算法和数据结构: 四 快速排序
- (21)tar打包命令详解
- MATLAB信号处理---学习小案例(2)---采样定理
- wp文章增加部分内容隐藏功能 -- 微信公众号吸粉
- Oracle 设置数据库时区
- Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
- 关于Python将plt文件坐标转换为TXT文本
- Linux安装cuda10.2
- FullCalendar 学习笔记——简单的节假日设置