Python使用PyMySQL

在Python 3.x版本中,使用内置库PyMySQL来连接MySQL数据库服务器。

安装PyMySQL

在使用PyMySQL之前,必须先确保已经安装了PyMySQL,读者可以在GitHub网站下载PyMySQL。如果还没有安装,可以使用如下命令安装最新版的PyMySQL。

pip install PyMySQL

安装成功后的界面如图所示。
Python使用PyMySQL

如果当前系统不支持pip命令,可以使用如下两种方式进行安装。

(1)使用git命令下载安装包并安装。

$ git clone https://GitHub官方域名.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install

(2)如果需要指定版本号,可以使用curl命令进行安装。

$ # X.X 为 PyMySQL 的版本号
$ curl -L https://GitHub官方域名.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
$ # 现在可以删除 PyMySQL* 目录

注意:你必须确保拥有root权限才可以安装上述模块。另外,在安装的过程中可能会出现“ImportError: No module named setuptools”提示信息,这个提示信息的意思是没有安装setuptools,可以从Python官方网站的setuptools中找到各个系统的安装方法。在Linux系统中的安装实例是:

$ wget https://......ez_setup.py
$ python3 ez_setup.py

下面的实例文件mysql.py显示PyMySQL数据库的版本号。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
#使用 execute()方法执行SQL查询
cursor.execute("SELECT VERSION()")
#使用 fetchone() 方法获取单条记录
data = cursor.fetchone()
print ("Database version : %s " % data)
#关闭数据库连接
db.close()

执行后会输出:

Database version : 5.7.17-log

创建数据库表

在Python程序中,可以使用方法execute()在数据库中创建一个新表。下面的实例文件new.py演示了,在PyMySQL数据库中创建新表EMPLOYEE的过程。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法创建一个游标对象 cursor
cursor = db.cursor()
#使用 execute() 方法执行sql语句,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
  FIRST_NAME  CHAR(20) NOT NULL,
  LAST_NAME  CHAR(20),
  AGE INT,
  SEX CHAR(1),
  INCOME FLOAT )"""
cursor.execute(sql)
#关闭数据库连接
db.close()

执行上述代码后,将在MySQL数据库中创建一个名为“EMPLOYEE”的新表,执行后的效果如图所示。
Python使用PyMySQL

数据库插入操作

在Python程序中,可以使用SQL语句向数据库中插入新的数据信息。下面的实例文件cha.py演示了使用INSERT语句向表EMPLOYEE中插入数据信息的过程。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
 LAST_NAME, AGE, SEX, INCOME)
 VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
   #执行SQL语句
   cursor.execute(sql)
   #提交到数据库执行
   db.commit()
except:
   #如果发生错误则回滚
   db.rollback()
# 关闭数据库连接
db.close()

执行上述代码后,打开MySQL数据库中的表“EMPLOYEE”,会发现在里面插入了一条新的记录。执行后的效果如图所示。
Python使用PyMySQL

数据库查询操作

在Python程序中,可以使用fetchone()方法获取MySQL数据库中的单条记录,使用fetchall()方法获取MySQL数据库中的多条数据。

下面的实例文件fi.py演示了如何查询并显示表EMPLOYEE中INCOME(工资)大于1000的所有员工。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法获取操作游标
cursor = db.cursor()
# sql查询语句
sql = "SELECT * FROM EMPLOYEE \
 WHERE INCOME > '%d'" % (1000)
try:
   #执行sql语句
   cursor.execute(sql)
   #获取所有记录列表
   results = cursor.fetchall()
   for row in results:
   fname = row[0]
   lname = row[1]
   age = row[2]
   sex = row[3]
   income = row[4]
# 显示结果
   print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
        (fname, lname, age, sex, income ))
except:
   print ("Error: unable to fetch data")
#关闭数据库连接
db.close()

执行后会输出:

fname=Mac,lname=Mohan,age=20,sex=M,income=2000

数据库更新操作

在Python程序中,可以使用UPDATE语句更新数据库中的数据信息。在下面的实例文件xiu.py中,将数据库表中“SEX”字段为“M”的“AGE”字段递增1。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法获取操作游标
cursor = db.cursor()
# sql 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
   #执行SQL语句
   cursor.execute(sql)
   #提交到数据库
   db.commit()
except:
   #当发生错误时回滚
   db.rollback()
#关闭数据库连接
db.close()

执行后的效果如图所示。
Python使用PyMySQL
(a)修改前
Python使用PyMySQL
(b)修改后

数据库删除操作

在Python程序中,可以使用DELETE语句删除数据库中的数据。在下面的实例文件del.py中,删除了表EMPLOYEE中所有AGE大于20的数据。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法获取操作游标
cursor = db.cursor()
# sql删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
   #执行sql语句
   cursor.execute(sql)
   #提交修改
   db.commit()
except:
   #当发生错误时回滚
   db.rollback()
#关闭连接
db.close()

执行后将删除表EMPLOYEE中所有AGE大于20的数据。执行后的效果如图所示。
Python使用PyMySQL

执行事务

在Python程序中,使用事务机制可以确保数据一致性。通常来说,事务应该具有4个属性——原子性、一致性、隔离性、持久性。这4个属性通常称为ACID特性。

  • 原子性:一个事务是一个不可分割的工作单元,事务中包括的诸操作要么都做,要么都不做。
  • 一致性:事务必须是使数据库从一个一致性状态变成另一个一致性状态,一致性与原子性是密切相关的。
  • 隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性:持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对它有任何影响。

在Python DB API 2.0的事务机制中提供了两个处理方法,分别是commit()和rollback()。在下面的实例文件shi.py中,通过执行事务的方式删除了表EMPLOYEE中所有AGE大于19的员工。

import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (19)
try:
   #执行SQL语句
   cursor.execute(sql)
   #向数据库提交
   db.commit()
except:
   #发生错误时回滚
   db.rollback()

执行后将删除表EMPLOYEE中所有AGE大于19的员工。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!