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模块之re正则表达式详解
Feb 03 Python
Python MD5加密实例详解
Aug 02 Python
Python中的取模运算方法
Nov 10 Python
使用python实现语音文件的特征提取方法
Jan 09 Python
python实现烟花小程序
Jan 30 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
如何通过python检查文件是否被占用
Dec 18 Python
利用python Pandas实现批量拆分Excel与合并Excel
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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
PHP中include()与require()的区别说明
2010/03/10 PHP
Php中文件下载功能实现超详细流程分析
2012/06/13 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
PHP使用递归生成文章树
2015/04/21 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python实现k-means算法
2018/02/23 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
python实现实时视频流播放代码实例
2020/01/11 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
管理标语大全
2014/06/24 职场文书
分居协议书范本
2014/11/03 职场文书
小学运动会加油词
2015/07/18 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书