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获取服务器信息的最简单实现方法
Mar 05 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
Python实现两款计算器功能示例
Dec 19 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
python中requests库+xpath+lxml简单使用
Apr 29 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模板引擎smarty详细介绍
2015/05/26 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php文件包含的几种方式总结
2019/09/19 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
javascript 闭包
2011/09/15 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
地理科学专业毕业生求职信
2013/10/15 职场文书
如何打造一封优秀的留学推荐信
2014/01/25 职场文书
运动会通讯稿300字
2014/02/02 职场文书
党员实事承诺书
2014/03/26 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
入伍通知书
2015/04/23 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
《海上日出》教学反思
2016/02/23 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python