python操作MySQL数据库的方法分享


Posted in Python onMay 29, 2012

我采用的是MySQLdb操作的MYSQL数据库。先来一个简单的例子吧:

import MySQLdb try: 
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306) 
cur=conn.cursor() 
cur.execute('select * from user') 
cur.close() 
conn.close() 
except MySQLdb.Error,e: 
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

请注意修改你的数据库,主机名,用户名,密码。

下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:

import MySQLdb try: 
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306) 
cur=conn.cursor() 
cur.execute('create database if not exists python') 
conn.select_db('python') 
cur.execute('create table test(id int,info varchar(20))') 
value=[1,'hi rollen'] 
cur.execute('insert into test values(%s,%s)',value) 
values=[] 
for i in range(20): 
values.append((i,'hi rollen'+str(i))) 
cur.executemany('insert into test values(%s,%s)',values) 
cur.execute('update test set info="I am rollen" where id=3') 
conn.commit() 
cur.close() 
conn.close() 
except MySQLdb.Error,e: 
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

请注意一定要有conn.commit()这句来提交事务,要不然不能真正的插入数据。

运行之后我的MySQL数据库的结果就不上图了。

import MySQLdb try: 
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306) 
cur=conn.cursor() 
conn.select_db('python') 
count=cur.execute('select * from test') 
print 'there has %s rows record' % count 
result=cur.fetchone() 
print result 
print 'ID: %s info %s' % result 
results=cur.fetchmany(5) 
for r in results: 
print r 
print '=='*10 
cur.scroll(0,mode='absolute') 
results=cur.fetchall() 
for r in results: 
print r[1] 

conn.commit() 
cur.close() 
conn.close() 
except MySQLdb.Error,e: 
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

运行结果就不贴了,太长了。

查询后中文会正确显示,但在数据库中却是乱码的。经过我从网上查找,发现用一个属性有可搞定:

在Python代码

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一个属性:
改为:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8')
charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。

下面贴一下常用的函数:

然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

参考资料:

MySQLdb‘s user guide

package MySQLdb

Python 相关文章推荐
分析python切片原理和方法
Dec 19 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
Python 忽略warning的输出方法
Oct 18 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
Python安装OpenCV的示例代码
Mar 05 Python
PyQt5实现简单的计算器
May 30 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
如何利用Python写个坦克大战
Nov 18 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 Python
Python开发五子棋小游戏
Apr 28 Python
python利用elaphe制作二维条形码实现代码
May 25 #Python
用python实现批量重命名文件的代码
May 25 #Python
删除目录下相同文件的python代码(逐级优化)
May 25 #Python
ssh批量登录并执行命令的python实现代码
May 25 #Python
巧用Python装饰器 免去调用父类构造函数的麻烦
May 18 #Python
Python使用Socket(Https)Post登录百度的实现代码
May 18 #Python
写了个监控nginx进程的Python脚本
May 10 #Python
You might like
PHP实现加密的几种方式介绍
2015/02/22 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
简单解决Python文件中文编码问题
2015/11/22 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
python3 反射的四种基本方法解析
2019/08/26 Python
python hash每次调用结果不同的原因
2019/11/21 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
django实现模型字段动态choice的操作
2020/04/01 Python
python实现canny边缘检测
2020/09/14 Python
Python实现自动整理文件的脚本
2020/12/17 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
工作过失检讨书
2014/02/23 职场文书
市场拓展计划书
2014/05/03 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python