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 18 Python
Python中的rjust()方法使用详解
May 19 Python
分享6个隐藏的python功能
Dec 07 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Python多项式回归的实现方法
Mar 11 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
python打开windows应用程序的实例
Jun 28 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
python cumsum函数的具体使用
Jul 29 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
python性能测试工具locust的使用
Dec 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
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
Python Requests 基础入门
2016/04/07 Python
Python在线运行代码助手
2016/07/15 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
PyTorch预训练的实现
2019/09/18 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
一些Solaris面试题
2013/03/22 面试题
专营店会计助理岗位职责
2013/11/29 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
学校工作推荐信范文
2014/07/11 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
Golang数据类型和相互转换
2022/04/12 Golang