Python进行MySQL数据库操作

最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运维来说,都应该学会用Python来提高工作效率。下面简单的介绍一下Python DB API MySQLdb

使用Python DB API访问数据库的流程图:

在Centos下安装MySQLdb模板(为了方便演显,我用yum安装,也是最快最省事的安装):

yum install MySQL-python -y

如果安装有ipython,可以看到它有非常多的对象,每个对象这里就介绍ipython的安装:

In [1]: import MySQLdbIn [2]: MySQLdb.
MySQLdb.BINARY                                   MySQLdb.NotSupportedError                        MySQLdb.escape_sequence
MySQLdb.Binary                                   MySQLdb.OperationalError                         MySQLdb.escape_string
MySQLdb.Connect                                  MySQLdb.ProgrammingError                         MySQLdb.get_client_info
MySQLdb.Connection                               MySQLdb.ROWID                                    MySQLdb.paramstyle
MySQLdb.DATE                                     MySQLdb.STRING                                   MySQLdb.release
MySQLdb.DATETIME                                 MySQLdb.TIME                                     MySQLdb.result
MySQLdb.DBAPISet                                 MySQLdb.TIMESTAMP                                MySQLdb.server_end
MySQLdb.DataError                                MySQLdb.Time                                     MySQLdb.server_init
MySQLdb.DatabaseError                            MySQLdb.TimeFromTicks                            MySQLdb.string_literal
MySQLdb.Date                                     MySQLdb.Timestamp                                MySQLdb.test_DBAPISet_set_equality
MySQLdb.DateFromTicks                            MySQLdb.TimestampFromTicks                       MySQLdb.test_DBAPISet_set_equality_membership
MySQLdb.Error                                    MySQLdb.Warning                                  MySQLdb.test_DBAPISet_set_inequality
MySQLdb.FIELD_TYPE                               MySQLdb.apilevel                                 MySQLdb.test_DBAPISet_set_inequality_membership
MySQLdb.IntegrityError                           MySQLdb.connect                                  MySQLdb.thread_safe
MySQLdb.InterfaceError                           MySQLdb.connection                               MySQLdb.threadsafety
MySQLdb.InternalError                            MySQLdb.constants                                MySQLdb.times
MySQLdb.MySQLError                               MySQLdb.debug                                    MySQLdb.version_info
MySQLdb.NULL                                     MySQLdb.escape
MySQLdb.NUMBER                                   MySQLdb.escape_dict        

我们这里主要说创建数据库的连接对象connection,创建方法MySQLdb.connect(参数)

主要参数如下:

  参数名    类型      说明
  host     字符串    MySQL服务器地址
  port     数字      MySQL服务器端口号
  user     字符串    用户名
  passwd   字符串    密码
  db       字符串    数据库名称
  charset  字符串    连接编码

 connection对象支持的方法:

方法名        说明
cursor()    使用该连接创建并返回游标
commit()    提交当前事务
rollback()  回滚当前事务
close()     关闭连接

实例讲解:编辑connection.py

#!/usr/bin/env python
#coding:utf-8
#name: connection.py

import MySQLdb   

#创建连接
conn = MySQLdb.connect(
    host = ‘127.0.0.1‘,
    port = 3306,
    user = ‘root‘,
    passwd = ‘123456‘,
    db = ‘python‘,
    charset = ‘utf8‘
)
#创建一个学游标对象
cursor = conn.cursor()
print conn
print cursor

#关闭游标 关闭连接
cursor.close()
conn.close()

执行结果:

[[email protected]server script]#python connection.py
<_mysql.connection open to ‘127.0.0.1‘ at 23c1fa0>
<MySQLdb.cursors.Cursor object at 0x7f545cbf97d0>
[[email protected]-server script]#vim connection.py

可以看到成功连接了MySQL.

下面介绍一下游标对象: 用于执行查询和获取结果

cursor对象支持的方法:

参数名               说明
execute(op[,args])   执行一个数据查询命令
fetchone()           取的结果集的下一行
fetchmany(size)      获取结果集的下几行
fetchall()           获取结果集中剩下的所有行
rowcount             最近一次execute返回的行数或影响行数
close()              关闭游标对象

execute方法:执行SQL、将结果从数据为获取到客户端:

fetch*()方法:移动rownumber,返回数据。

实例演示:(select查询数据)

创建一张测试:

CREATE TABLE `user` (
  `userid` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
mysql> select * from user;
+--------+----------+
| userid | username |
+--------+----------+
|      1 | user1    |
|      2 | user2    |
|      3 | user3    |
|      4 | user4    |
|      5 | user5    |
|      6 | user6    |
|      7 | user7    |
|      8 | user8    |
|      9 | user9    |
+--------+----------+
9 rows in set (0.00 sec)

编辑cursor.py文件:

#!/usr/bin/env python
#coding:utf-8
#name: cursor.py
import MySQLdb

conn = MySQLdb.connect(
    host = ‘127.0.0.1‘,
    port = 3306,
    user = ‘root‘,
    passwd = ‘123456‘,
    db = ‘python‘,
    charset = ‘utf8‘
)

cursor = conn.cursor()
sql = "select * from user"
cursor.execute(sql)

#打印所有行数据
print cursor.rowcount

#打印第一行数据
rs = cursor.fetchone()
print "返回一条数据",rs

#打印从第二行起的三行数据
rs = cursor.fetchmany(3)
print "返回从第二条起的三条数据",rs

#打印剩下的所有行数
rs = cursor.fetchall()
print "返回剩下的行数据",rs

cursor.close()
conn.close()

运行程序:

[[email protected]server script]#python connection.py
9
返回一条数据 (1L, u‘user1‘)
返回从第二条起的三条数据 ((2L, u‘user2‘), (3L, u‘user3‘), (4L, u‘user4‘))
返回剩下的行数据 ((5L, u‘user5‘), (6L, u‘user6‘), (7L, u‘user7‘), (8L, u‘user8‘), (9L, u‘user9‘))

我们看到,每次使用fetch方法,都是在上一次fetch方法执行的结果的尾部开始。

如果我们想把表里的数据格式化打印出来,因为从上面的结果我们可以看到返回的是元组的元组,我们通过for方法把它取出:

#!/usr/bin/env python
#coding:utf-8
#name: cursor.py
import MySQLdb

conn = MySQLdb.connect(
    host = ‘127.0.0.1‘,
    port = 3306,
    user = ‘root‘,
    passwd = ‘123456‘,
    db = ‘python‘,
    charset = ‘utf8‘
)

cursor = conn.cursor()
sql = "select * from user"
cursor.execute(sql)
#获取所有行的数据
rs = cursor.fetchall()
for row in rs:
    print "userid=%s, username=%s" % row

cursor.close()
conn.close()

执行程序:

[[email protected]server script]#python cursor.py
userid=1, username=user1
userid=2, username=user2
userid=3, username=user3
userid=4, username=user4
userid=5, username=user5
userid=6, username=user6
userid=7, username=user7
userid=8, username=user8
userid=9, username=user9

对MySQL的insert/delete/update的操作演示:

编辑一个增删改的脚本iud.py

#!/usr/bin/env python
#coding:utf-8
#name: iud.py
import MySQLdb

conn = MySQLdb.connect(
    host = ‘127.0.0.1‘,
    port = 3306,
    user = ‘root‘,
    passwd = ‘123456‘,
    db = ‘python‘,
    charset = ‘utf8‘
)

cursor = conn.cursor()
#插入sql
sql_insert = "insert into user (userid,username) values (10,‘user10‘)"
#更新sql
sql_update = "update user set username= ‘name91‘ where userid=9"
#删除sql
sql_delete = "delete from user where userid < 3"

#把一个事务放到一个try块里,如果出现异常就回滚

try:
    cursor.execute(sql_insert)
    print cursor.rowcount

    cursor.execute(sql_update)
    print cursor.rowcount

    cursor.execute(sql_delete)
    print cursor.rowcount

    #提交事务
    conn.commit()

    #格式化增删改后的数据查出来
    select_sql = "select * from user"
    cursor.execute(select_sql)
    rs = cursor.fetchall()
    for row in rs:
        print "userid=%s, username=%s" % row

except Exception as e:
    conn.rollback()  #若有异常就回滚

执行程序,结果如下:

[email protected]server script]#python iud.py
1
1
2
userid=3, username=user3
userid=4, username=user4
userid=5, username=user5
userid=6, username=user6
userid=7, username=user7
userid=8, username=user8
userid=9, username=name91
userid=10, username=user10

通过上面的简单例子说明了通过Python的MySQLdb模块去进行MySQL数据库操作,网上有很多例子,我是Python菜鸟,通过参加慕课网的一些简单直接的python课程学习,个人感觉还不错,至少我学会了使用Python去操作MySQL。

参考资料:

https://www.python.org/dev/peps/pep-0249/

http://www.imooc.com


作者:陆炫志

出处:xuanzhi的博客 http://www.cnblogs.com/xuanzhi201111

您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

时间: 2024-11-04 11:43:08

Python进行MySQL数据库操作的相关文章

python的mysql数据库操作

python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 我目前使用的是mysql数据库,所以这里只是记录了python中mysql的使用 在写my

22、Python之mysql数据库操作

一.mysql mysql服务安装及使用方法,请自行百度,我们这里重点是学习如何使用python操作mysql数据库,需要用到模块pymysql,请听我娓娓道来. python操作mysql的具体步骤如下: 1.导入pymysql模块  import pymysql 2.连接mysql数据库 conn = pymysql.Connect(host='192.168.12.1',port=3306,user = 'root',passwd='1234',db='python',charset='u

python接口测试—mysql数据库操作

python操作mysql数据库 1.安装pymysql库 在python中安装pymysql第三方库,通过pip install pymysql 命令进行安装. 2.python操作mysql数据库的步骤 建立数据库连接,连接到数据库 connect 创建一个游标 cursor 执行对应的sql语句 获取查询到的数据 3.获取查询数据的两个方式 方式一:获取一条查询数据 data_one = cur.fetchone() # 游标名.fetchone() 方式二:获取所有的查询数据 data

Python/MySQL(四、MySQL数据库操作)

Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: 1 case when id>9 then ture else false 二.三元运算: 1 if(isnull(xx)0,1) 三.上下连表: select id,name from ta1 union 天然去重(检测上边的表和下边的表行内完全一样就只显示一行内容) select num,sname from tb2 ========================================== select

Python Mysql 数据库操作

本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMySQL. myconnpy.MySQL Connector 等,不过本篇要说的确是另外一个类库MySQLdb,MySQLdb 是用于Python链接Mysql数据库的接口,它

Python 对mysql数据库的操作

Python 对mysql数据库的操作 #!/usr/bin/python #-*- coding: utf-8 -*- import MySQLdb class mysql:     def __init__(self,sql,host='127.0.0.1',username='root',password='root',dbname='dbname'):         self.username=username         self.password=password       

Python使用MySQL数据库(新)

之前写过一篇 Python使用MySQL数据库的博客,主要使用的是Python2和MySQLdb驱动. python使用mysql数据库 然而,2016年开始,我从Python2切换到了Python3,Python2已经基本不再使用,MySQLdb驱动从2014年1月停止了维护.所以,打算重新再来写这篇博客. Python2 ---> Python3 MySQLdb --> PyMySQL 一,安装PyMySQL Python是编程语言,MySQL是数据库,它们是两种不同的技术:要想使Pyth

Python 3 mysql 库操作

Python 3 mysql 库操作 一.基础相关知识 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list,相当于一个具体的文件 记录:1 刘海龙 324245234 22,相当于文件中的一行内容 二.SQL语言简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询

使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据

应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字.假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字. 假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字.那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作. 具体的示意图如下所示: 首先图1是我们的原始表格: 图1 这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入. 图2 上图是我们整个表的概况.下面我们就用程序来