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

sql拼接方法

# encoding=utf-8
from django.http import HttpResponse
from anyjson import serialize
from django.http import HttpResponse
from anyjson import serialize
import MySQLdbdef safe(s):return MySQLdb.escape_string(s)def get_i_sql(table, dict):'''生成insert的sql语句@table,插入记录的表名@dict,插入的数据,字典'''sql = 'insert into %s set ' % tablesql += dict_2_str(dict)return sqldef 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 ' % tableif conditions:sql += ' where %s ' % dict_2_str_and(conditions)return sqldef get_u_sql(table, value, conditions):'''生成update的sql语句@table,查询记录的表名@value,dict,需要更新的字段@conditions,插入的数据,字典'''sql = 'update %s set ' % tablesql += dict_2_str(value)if conditions:sql += ' where %s ' % dict_2_str_and(conditions)return sqldef get_d_sql(table, conditions):'''生成detele的sql语句@table,查询记录的表名@conditions,插入的数据,字典'''sql = 'delete from  %s  ' % tableif conditions:sql += ' where %s ' % dict_2_str_and(conditions)return sqldef 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'%tablereturn 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语句拼接方法相关推荐

  1. python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法

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

  2. [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句

    [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句 楼主  发表于 2013-5-15 22:39:29 | 查看: 813| 回复: 0 利用QSqlQuery类执行SQL语 ...

  3. 帝国cms php sql,帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

    帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 例1:连接MYSQL数据库例子.(a.php) db_close(); //关闭MYSQL链接$empire=null; //注消操作类变量? ...

  4. 云服务器怎么执行sql文件在哪里,总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例...

    总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例 发布时间:2020-10-19 14:58:08 来源:亿速云 阅读:83 作者:小新 这篇文章将为大家详细讲解有关总结帝国CMS下在 ...

  5. python处理字符串(SQL语句批量新增)

    python处理字符串(SQL语句批量新增) 一个有许多url字符串需要改为单个的url一次存入mysql数据库 ##字符串 str1 = """http://www.s ...

  6. 【spring】spring JDBC开发 、 将创建表生成sql语句的方法

    将navicate中已存在表的创建转化成sql语句的方法 1.右击表,选择对象信息 2.点击DDL jar包引入 1.spring-starter-jdbc 代码实现: <dependency& ...

  7. 【腾讯面试题】SQL语句优化方法有哪些?

    SQL语句优化 性能不理想的系统中,除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂 ...

  8. php打印mysql sql_php的打印sql语句的方法

    echo M()->_sql(); 这样就可以调试当前生成的sql语句: //获取指定天的开始时间和结束时间 $datez="2016-05-12"; $t = strtot ...

  9. thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法

    本文实例讲述了thinkPHP框架中执行原生SQL语句的方法.分享给大家供大家参考,具体如下: 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $ ...

最新文章

  1. iOS一些实用的技巧
  2. 免费开源、功能完善、暗黑风格,你会拒绝这款SSH工具吗?
  3. OpenCV像素点处理 1
  4. JavaFX:太空侵略者在175 LOC以下
  5. LeetCode —— 257. 二叉树的所有路径(Python)
  6. java.net.MalformedURLException: unknown protocol: c 这个错一般有两种原因导致: 1、URL协议、格式或者路径错误,...
  7. 三星Galaxy Note 10+真机照公布:居中开孔前摄实锤
  8. GPIO应用开发方法【ZT】
  9. 深度学习各场景评估指标总结
  10. oracle 删除用户和依赖,Oracle 12.2使用手动创建与注册依赖对象来执行联机重定义...
  11. Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别
  12. python自定义二元一次函数_Python二元赋值实用技巧解析
  13. 【C++】右值引用、移动构造函数
  14. 安卓如何关闭软键盘?
  15. 他们联手造了个抢票节”
  16. 编辑为什么建议转投_编辑回信解读 —“建议转投子刊”实例
  17. android 菜单一行两列,Android RadioGroup 横向显示(两行两列)
  18. 第1章第6节:如何打开之前编辑过的演示文稿 [PowerPoint精美幻灯片实战教程]
  19. 互联网营销的技巧方法和套路!
  20. 笔记整理英语篇(二) - 日常词汇

热门文章

  1. umi脚手架搭建的项目_15天零成本搭建静态博客,托管于Github Page
  2. zynqpl端时钟_第十一章 ZYNQ-MIZ701 PS读写PL端BRAM
  3. 下列关于Java多线程并发控制_下列关于Java多线程并发控制机制的叙述中,错误的是...
  4. 一般将来时语法课教案_「英语语法」一般过去时用法技巧全解
  5. 电脑壁纸励志_励志壁纸 | 要乖 要长大 要努力 要不负众望
  6. node.js 验证路径有效性_怎样识别光伏谐波路径?试试这个算法
  7. 微信小程序学习做动画效果
  8. 【微信小程序】侧滑栏,手动侧滑出个人中心(完整代码附效果图)
  9. 最新最全的 Android 开源项目合集(一)
  10. maven项目中 把依赖的jar包一起打包