Python 边做边学 8.3 工具类--数据库工具(DbUtil)
来源:互联网 发布:二维数组是线性结构吗 编辑:程序博客网 时间:2024/06/04 18:24
原文连接:http://blog.csdn.net/tomorrow13210073213/article/category/6931287
数据持久化
采集到的数据需要保存起来,这是个demo项目,选用什么方式做数据持久化并不是十分重要,重要的是把数据存起来;
之前项目一直在用mysql,所以此处也使用mysql做数据存储;
搜索“python3 操作mysql”
搜索“python3 操作mysql”,找到一篇比较靠谱的:
http://blog.csdn.net/nuli888/article/details/51960571
文章开头“python3.x 使用pymysql操作MySQL,python2.x使用mysqldb操作mysql”告诉我们“python3.x 使用pymysql操作MySQL”;用pycharm下载“pymysql”包之后,就可以使用了;
“pymysql”操作数据库与其他编程语言类似:
建立连接
获取游标
执行语句
提交结果
关闭游标
关闭链接
DbUtil.py代码
import pymysqlfrom lufaxin.csdn.util import CfgUtil__host = CfgUtil.get_db("host")__user = CfgUtil.get_db("user")__passwd = CfgUtil.get_db("passwd")__db = CfgUtil.get_db("db")__port = int(CfgUtil.get_db("port"))__charset = CfgUtil.get_db("charset")def execute(sql_str): if sql_str is None: raise Exception("参数不能为空:sql_str") if len(sql_str) == 0: raise Exception("参数不能为空:sql_str") try: conn = pymysql.connect(host=__host, user=__user, passwd=__passwd, db=__db, port=__port, charset=__charset) cur = conn.cursor() # 获取一个游标 cur.execute(sql_str) data = cur.fetchall() conn.commit() cur.close() # 关闭游标 conn.close() # 释放数据库资源 return data except Exception as e: raise e# 插入数据,返回数据主键def execute_insert(insert_str, data): if insert_str is None: raise Exception("参数不能为空:sql_str") if len(insert_str) == 0: raise Exception("参数不能为空:sql_str") try: conn = pymysql.connect(host=__host, user=__user, passwd=__passwd, db=__db, port=__port, charset=__charset) cur = conn.cursor() # 获取一个游标 cur.execute(insert_str, data) data = cur.fetchall() # last_id = cur.lastrowid last_id = conn.insert_id() conn.commit() cur.close() # 关闭游标 conn.close() # 释放数据库资源 return last_id except Exception as e: raise e# 更新数据,返回更新条数def execute_update(update_str, data): if update_str is None: raise Exception("参数不能为空:update_str") if len(update_str) == 0: raise Exception("参数不能为空:update_str") try: conn = pymysql.connect(host=__host, user=__user, passwd=__passwd, db=__db, port=__port, charset=__charset) cur = conn.cursor() # 获取一个游标 count = cur.execute(update_str, data) conn.commit() cur.close() # 关闭游标 conn.close() # 释放数据库资源 return count except Exception as e: raise e# 执行带参数的查询,返回查询结果def execute_select(select_str, data): if select_str is None: raise Exception("参数不能为空:sql_str") if len(select_str) == 0: raise Exception("参数不能为空:sql_str") try: conn = pymysql.connect(host=__host, user=__user, passwd=__passwd, db=__db, port=__port, charset=__charset) cur = conn.cursor() # 获取一个游标 cur.execute(select_str, data) data = cur.fetchall() conn.commit() cur.close() # 关闭游标 conn.close() # 释放数据库资源 return data except Exception as e: raise e# 执行带参数的删除def execute_delete(select_str, data): if select_str is None: raise Exception("参数不能为空:sql_str") if len(select_str) == 0: raise Exception("参数不能为空:sql_str") try: conn = pymysql.connect(host=__host, user=__user, passwd=__passwd, db=__db, port=__port, charset=__charset) cur = conn.cursor() # 获取一个游标 cur.execute(select_str, data) data = cur.fetchall() conn.commit() cur.close() # 关闭游标 conn.close() # 释放数据库资源 return data except Exception as e: raise e
数据库链接
数据库连接信息来自配置文件:
__host = CfgUtil.get_db("host")__user = CfgUtil.get_db("user")__passwd = CfgUtil.get_db("passwd")__db = CfgUtil.get_db("db")__port = int(CfgUtil.get_db("port"))__charset = CfgUtil.get_db("charset")
创建连接
通过“pymysql.connect()”方法创建数据库连接:
conn = pymysql.connect(host=__host, user=__user, passwd=__passwd, db=__db, port=__port, charset=__charset)
获取游标
cur = conn.cursor() # 获取一个游标
执行语句
cur.execute(sql_str)data = cur.fetchall()
提交结果
conn.commit()
关闭连接,游标
cur.close() # 关闭游标conn.close() # 释放数据库资源
参数传递
如上面定义的“execute”方法所示,可以只传递一个参数,那就是要执行的sql语句;这种方式执行简单操作可以,但执行复杂插入,更新等操作会比较复杂;所以有了下面几个方法,用来执行不同的操作(增删改查),不再一一介绍;
调用方法
from lufaxin.csdn.util import DbUtil......sql = "select " + cols_str + " from " + table_name + " where " + t_pk + " = " + str(pk)sel_data = DbUtil.execute(sql)......sql = "delete from " + table_name + " where " + pk_name + " = " + str(pk)del_data = DbUtil.execute(sql)
其他方法类似,构建各表数据库操作基础类的的时候,再详细描述各方法的用法;
以上就是我们用到的数据库操作工具类;
以上内容仅供练习,学习使用;
阅读全文
0 0
- Python 边做边学 8.3 工具类--数据库工具(DbUtil)
- 数据库工具类DBUtil
- DBUtil 数据库工具类
- (26)数据库工具类DbUtil
- DBUtil数据库操作工具类
- DBUtil数据库工具封装
- jdbc数据库操作工具类--DBUtil
- JAVA- DBUtil 封装数据库工具类
- DBUtil工具类
- DBUtil工具类JdbcUtil
- DBUtil工具类
- 工具类之数据库工具类:DBUtil(采用反射机制)
- Qt数据库之数据库访问工具 DBUtil
- Java 最简单的 数据库工具类 DbUtil
- JAVA学习笔记(五十一)- DBUtil 封装数据库工具类
- JDBC优化之路-2(添加工具类DBUtil)
- 简单的数据库连接工具类DBUtil
- DbUtil工具的使用
- 中国大学MOOC-陈越、何钦铭-数据结构-2017春期末考试
- CodeChef:A temple of Snakes(思维 & 二分)
- 在WAS中承载WCF服务
- java web学习记录
- mysql数据库结构管理命令1-5
- Python 边做边学 8.3 工具类--数据库工具(DbUtil)
- SharePoint 入门基础整合
- STL标准模板库归纳总结
- sqlite查询的理解
- 二叉树递归与非递归遍历
- XML
- matlab中svd函数用法总结
- MD5加密过程学习
- Java多线程技术研究(一)-多线程的创建及常见名词