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分析网页上所有超链接的方法
May 08 Python
简单实现python进度条脚本
Dec 18 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
python 标准差计算的实现(std)
Jul 29 Python
django-初始配置(纯手写)详解
Jul 30 Python
使用Python脚本zabbix自定义key监控oracle连接状态
Aug 28 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
Python实现动态循环输出文字功能
May 07 Python
解决python执行较大excel文件openpyxl慢问题
May 15 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数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
微信小程序 数据遍历的实现
2017/04/05 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
react中Suspense的使用详解
2019/09/01 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
利用python画一颗心的方法示例
2017/01/31 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
升职自荐书范文
2013/11/28 职场文书
教师岗位职责范本
2013/12/29 职场文书
面试后的感谢信范文
2014/02/01 职场文书
会计核算科岗位职责
2014/03/19 职场文书
六一儿童节主持词
2014/03/21 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL
python turtle绘图命令及案例
2021/11/23 Python