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单链表的简单实现方法
Sep 23 Python
Python中用于检查英文字母大写的isupper()方法
May 19 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
python中退出多层循环的方法
Nov 27 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
如何通过python画loss曲线的方法
Jun 26 Python
python字符串替换第一个字符串的方法
Jun 26 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
wxpython绘制音频效果
Nov 18 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
python爬取豆瓣电影TOP250数据
May 23 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php实现的SESSION类
2014/12/02 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
[原创]图片分页查看
2006/08/28 Javascript
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
理解javascript正则表达式
2016/03/08 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
js数据类型检测总结
2018/08/05 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
python实现类的静态变量用法实例
2015/05/08 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
查看Django和flask版本的方法
2018/05/14 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
python进度条显示之tqmd模块
2020/08/22 Python
python如何实现图片压缩
2020/09/11 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
搞笑婚礼主持词
2014/03/13 职场文书
校庆接待方案
2014/03/18 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
安全学习心得体会范文
2016/01/18 职场文书