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的gevent框架的入门教程
Apr 29 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
python计算两个地址之间的距离方法
Jun 09 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
python基于http下载视频或音频
Jun 20 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
对pandas处理json数据的方法详解
Feb 08 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
Python基于gevent实现高并发代码实例
May 15 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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/03/31 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Python类的多重继承问题深入分析
2014/11/09 Python
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
Python实现网站表单提交和模板
2019/01/15 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
python3实现简单飞机大战
2020/11/29 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
英语系毕业生自荐信
2013/10/31 职场文书
自主招生自荐书
2013/11/29 职场文书
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
花坛标语大全
2014/06/30 职场文书
小学课外阅读总结
2014/07/09 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
Python中的程序流程控制语句
2022/02/24 Python