这个工具类十分简单和简洁。

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语句拼接方法相关推荐

  1. python代码规范方面的书_你写的Python代码规范吗?

    # 不建议这样importpandas,numpy 且导入模块的代码总是位于代码的最开始部分,在模块注释和文档字符串之后,在模块的全局变量与常量之前. 2.8命名规范 在 Python 里面会涉及到很 ...

  2. python在匿名函数作和_跟光磊学Python开发-匿名函数函数和高阶函数

    跟光磊学Python开发-匿名函数函数和高阶函数 跟光磊学Python开发-匿名函数函数和高阶函数跟光磊学Python开发 匿名函数 匿名函数就是函数定义时没有名字的函数,也称为匿名表达式. 普通函数 ...

  3. python赋值语句的一般格式为_[零基础学Python]赋值,简单也不简单

    变量命名 在<初识永远强大的函数>一文中,有一节专门讨论"取名字的学问",就是有关变量名称的问题,本温故而知新的原则,这里要复习: 名称格式:(下划线或者字母)+(任意 ...

  4. python在建筑施工方面的应用_有哪些关于 Python 在建筑中的应用和教程?

    2018.02.09更新 (發現距離上一次更新馬上就要兩年了--) 嗯,兩年間發生了很多事.我也莫名其妙跑到ETH來了. 做起了Fab的優化,python已經完全不能滿足效率和複雜度的要求,走上了C+ ...

  5. python基于水色图像的水质评价_零基础学习Python的学习路线及教程

    什么是Python? 在过去的2017年里,Python开发者在全球快速增长,国内小伙伴学习 Python 的热情一路高涨.同时,PYPL发布7月编程语言指数榜,Python 在今年5月首次超越 Ja ...

  6. 利用python爬取知乎评论_一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: 1 # -*- c ...

  7. python语言程序设计基础上海交通大学_北京交通大学:Python语言程序设计

    『课程目录』:$ y0 q8 G3 Q" Z% p6 K│ ├─第一章概述, c) e/ m) X# s- B, r│ │ 1.1.1第1课时计算机起源 – 计算机发展史中三位里程碑人物,快 ...

  8. 自己写的Python数据库连接类和sql语句拼接方法

    这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...

  9. python能做出什么样的网站_我能用Python做什么?

    如果你想学Python,或者你刚开始学习Python,那么你可能会问:"我能用Python做什么?" 这个问题不好回答,因为Python有很多用途. 但是随着时间,我发现有Pyth ...

最新文章

  1. spring对session和事务的管理以及OpenSessionInViewFilter是如何工作
  2. 将整型字符串转成整数值
  3. 通过Erlang构建TCP服务器
  4. 硬件——STM32 , 录音
  5. Java Websocket实例
  6. 信息安全系统设计基础第十一周 20135218 姬梦馨
  7. 一道小学数学题引发的“纷争” 产科医生给出解答
  8. 多实例多进程网络编程PHP,php socket网络编程基础知识(四):多进程
  9. centos7下memcached的安装配置
  10. 从头到尾谈一下HTTPS
  11. python语言检测模块langid、langdetect使用
  12. 浅谈算法和数据结构: 四 快速排序
  13. (21)tar打包命令详解
  14. MATLAB信号处理---学习小案例(2)---采样定理
  15. wp文章增加部分内容隐藏功能 -- 微信公众号吸粉
  16. Oracle 设置数据库时区
  17. Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
  18. 关于Python将plt文件坐标转换为TXT文本
  19. Linux安装cuda10.2
  20. FullCalendar 学习笔记——简单的节假日设置

热门文章

  1. lo ate my IP address问题解决
  2. s5p4418 android 驱动 hal 应用之led 串口 rs485 can总线应用(app 有源码)
  3. Oracle 查询基础
  4. 11.15 dmidecode:查询系统硬件信息
  5. 大话移动通信pdf_移动通信是怎么实现的?
  6. c#web页面显示弹窗_C#中三种弹出信息窗口的方式
  7. 【活动报名】2021蚂蚁链开发者大会
  8. 如何设计一个端计算架构?
  9. 简历石沉大海、面试被刷?拒绝你的HR小姐姐,可能只是个AI
  10. 从阿里前端工程化中台实践,看中台建设的舍与得