Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 453|回复: 0

[默认分类] python操作MySQL数据库

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-6-30 10:24:14 | 显示全部楼层 |阅读模式
    坚持每天学一点,每天积累一点点,作为自己每天的业余收获,这个文章是我在吃饭的期间写的,利用自己零散的时间学了一下python操作MYSQL,所以整理一下。
    我采用的是MySQLdb操作的MYSQL数据库。先来一个简单的例子吧:

    1. import MySQLdb
    2. try:
    3.     conn=MySQLdb.connect(host="localhost",user="root",passwd="root",db="test",port=3306)
    4.     cur=conn.cursor()
    5.     cur.execute("select * from user")
    6.     cur.close()
    7.     conn.close()
    8. except MySQLdb.Error,e:
    9.      print "Mysql Error %d: %s" % (e.args[0], e.args[1])
    复制代码

      请注意修改你的数据库,主机名,用户名,密码。
    下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:

    1. import MySQLdb
    2. try:
    3.     conn=MySQLdb.connect(host="localhost",user="root",passwd="root",port=3306)
    4.     cur=conn.cursor()
    5.    
    6.     cur.execute("create database if not exists python")
    7.     conn.select_db("python")
    8.     cur.execute("create table test(id int,info varchar(20))")
    9.    
    10.     value=[1,"hi rollen"]
    11.     cur.execute("insert into test values(%s,%s)",value)
    12.    
    13.     values=[]
    14.     for i in range(20):
    15.         values.append((i,"hi rollen"+str(i)))
    16.         
    17.     cur.executemany("insert into test values(%s,%s)",values)
    18.     cur.execute("update test set info="I am rollen" where id=3")
    19.     conn.commit()
    20.     cur.close()
    21.     conn.close()
    22. except MySQLdb.Error,e:
    23.      print "Mysql Error %d: %s" % (e.args[0], e.args[1])
    复制代码

      请注意一定要有conn.commit()这句来提交事务要不然不能真正的插入数据。
    运行之后我的MySQL数据库的结果就不上图了。

    1. import MySQLdb
    2. try:
    3.     conn=MySQLdb.connect(host="localhost",user="root",passwd="root",port=3306)
    4.     cur=conn.cursor()
    5.    
    6.     conn.select_db("python")
    7.     count=cur.execute("select * from test")
    8.     print "there has %s rows record" % count
    9.     result=cur.fetchone()
    10.     print result
    11.     print "ID: %s info %s" % result
    12.     results=cur.fetchmany(5)
    13.     for r in results:
    14.         print r
    15.     print "=="*10
    16.     cur.scroll(0,mode="absolute")
    17.     results=cur.fetchall()
    18.     for r in results:
    19.         print r[1]
    20.    
    21.     conn.commit()
    22.     cur.close()
    23.     conn.close()
    24. except MySQLdb.Error,e:
    25.      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

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-24 07:45 , Processed in 0.390483 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表