📅  最后修改于: 2023-12-03 14:46:38.109000             🧑  作者: Mango
MySQLdb是Python提供的一个第三方库,可以用来连接MySQL数据库。使用MySQLdb连接数据库可以实现用Python编写后台程序,对MySQL数据库进行读写操作。
在使用MySQLdb之前,需要先安装它。可以使用pip安装:
pip install mysqlclient
如果上述方法无法安装,也可以尝试使用以下命令安装:
pip install MySQL-python
连接MySQL数据库的方法有多种,这里介绍其中一种方法。首先需要导入MySQLdb模块,然后使用connect()方法连接数据库,示例代码如下:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "testdb", charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 执行SQL语句
cursor.execute("SELECT VERSION()")
# 获取一条数据
data = cursor.fetchone()
print "Database version : %s " % data
# 关闭数据库连接
db.close()
在上述代码中,localhost
表示本地连接,testuser
是连接数据库的用户名,test123
是连接密码。testdb
是要连接的数据库名,charset='utf8'
表示使用UTF-8编码。
使用cursor()方法获取操作游标,然后可以执行SQL语句,接下来获取数据库返回的数据。最后不要忘记关闭数据库连接。
使用MySQLdb可以执行所有的SQL语句,包括SELECT、INSERT、UPDATE等语句。示例代码如下:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "testdb", charset='utf8')
# 使用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 fecth data"
# 关闭数据库连接
db.close()
在上述代码中,首先定义了查询语句,EMPLOYEE
是数据库中的表名,INCOME
是表中的字段。使用%d
占位符可以传递一个数字参数。使用execute()
方法执行SQL语句,执行成功后可以使用fetchall()
方法获取返回的数据。最后遍历结果集,获取每个字段的值。
使用参数化查询可以防止SQL注入攻击,示例代码如下:
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "testdb", charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 执行SQL语句
sql = "SELECT * FROM EMPLOYEE WHERE INCOME > %s"
try:
# 执行SQL语句
cursor.execute(sql, (1000,))
# 获取所有记录列表
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 fecth data"
# 关闭数据库连接
db.close()
在上述代码中,将查询语句中的%d
替换为%s
,然后在execute()
方法的第二个参数中传递一个元组,使用元组中的数据来替换占位符。在使用参数化查询时,可以避免SQL注入攻击。
使用MySQLdb可以方便地连接MySQL数据库,并执行SQL语句。在编写Python后端程序时,使用MySQLdb可以实现对数据库的读写操作,非常实用。