MySQL MySQLdb for Python 2.7 (Ubuntu)
MySQL是一个非常流行的关系型数据库管理系统,设计简单而且易于使用。Python则是一种优雅而强大的解释型高级编程语言。在Python的强大加持下,我们完全可以通过编写Python程序来控制MySQL的行为,实现针对MySQL的数据处理。
然而,Python与MySQL之间并不是直接能够通讯的,其间需要经过一个中间件,用于将Python程序和MySQL服务器进行桥接。而这个中间件就是MySQLdb模块。
阅读更多:MySQL 教程
安装MySQLdb
为了在Python中使用MySQLdb,我们首先需要对其进行安装。
在Ubuntu操作系统中,我们可以使用以下命令来进行安装:
sudo apt-get install python-mysqldb
连接MySQL
成功安装MySQLdb之后,我们可以开始编写Python程序,并使用MySQLdb来连接MySQL服务器。
以下是一个Python程序的示例,用于连接MySQL服务器:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取一条数据
data = cursor.fetchone()
print "Database version : %s " % data
# 关闭数据库连接
db.close()
在该示例程序中,我们使用MySQLdb.connect()
方法来进行MySQL服务器的连接。在该方法中需要指定服务器的地址、用户名、密码以及待连接的数据库名称。
数据库操作
成功连接MySQL服务器之后,我们可以开始执行各种SQL命令,对数据库进行操作。
创建数据库
以下是一个Python程序的示例,用于创建一个新的数据库:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 创建数据表SQL语句
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
# 执行SQL语句
cursor.execute(sql)
# 关闭数据库连接
db.close()
在该示例程序中,我们使用cursor.execute()
方法来执行SQL命令。在该方法中需要传递SQL命令字符串,该命令将在MySQL服务器上被执行。
插入数据
除了创建数据库之外,我们还可以通过SQL命令向数据库中插入数据。以下是一个Python程序的示例,用于向数据库中插入一条新记录:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","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()
在该示例程序中,我们首先使用SQL命令创建一个数据表,并向数据表中插入一条新记录。其中,VALUES
子句指定新记录中每个字段的值。
查询数据
在对数据库进行操作之后,我们可以使用SQL命令来进行数据的查询。以下是一个Python程序的示例,用于查询数据库中所有记录:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL查询语句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > %s" % (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()
在该示例程序中,我们首先使用SELECT
语句查询数据库中所有记录,并对查询结果进行打印输出。
更新数据
在针对数据库进行操作时,我们还需要对记录中的值进行修改。以下是一个Python程序的示例,用于更新一条特定记录:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","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()
在该示例程序中,我们使用SQLUPDATE
语句修改了数据库中特定记录的值。
删除数据
除了对记录的值进行修改之外,我们还可以使用SQLDELETE
语句删除数据表中的记录。以下是一个Python程序的示例,用于删除一条特定的记录:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost","testuser","test123","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()
在该示例程序中,我们使用SQLDELETE
语句删除了数据表中一个特定记录。
总结
MySQLdb是连接Python和MySQL之间的桥梁。使用MySQLdb和Python编写的程序可以让我们更加方便、简单、快捷地操作MySQL数据库。
在实际使用过程中,程序员应该深刻理解MySQLdb的底层原理,并注重代码的健壮性和安全性。