python操作MySQL数据库具体方法


Posted in Python onOctober 28, 2013
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 MySQLdbtry:
    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 MySQLdbtry:
    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条.

Python 相关文章推荐
使用python实现baidu hi自动登录的代码
Feb 10 Python
python和flask中返回JSON数据的方法
Mar 26 Python
python docx 中文字体设置的操作方法
May 08 Python
Python列表生成式与生成器操作示例
Aug 01 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python高级特性与几种函数的讲解
Mar 08 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
python DataFrame转dict字典过程详解
Dec 26 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
树莓派升级python的具体步骤
Jul 05 Python
python中doctest库实例用法
Dec 31 Python
如何获取numpy array前N个最大值
May 14 Python
Python sys.path详细介绍
Oct 17 #Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 #Python
python中 ? : 三元表达式的使用介绍
Oct 09 #Python
Python 文件和输入输出小结
Oct 09 #Python
Python 错误和异常小结
Oct 09 #Python
Python 命令行非阻塞输入的小例子
Sep 27 #Python
用Python脚本生成Android SALT扰码的方法
Sep 18 #Python
You might like
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
JS的get和set使用示例
2014/02/20 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
哪些情况下不应该使用索引
2015/07/20 面试题
幼儿教师考核制度
2014/01/25 职场文书
校庆活动方案
2014/03/31 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
和睦家庭事迹
2014/05/14 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android