📌  相关文章
📜  Python中的MYSQLdb连接(1)

📅  最后修改于: 2023-12-03 14:46:38.109000             🧑  作者: Mango

Python中的MYSQLdb连接

MySQLdb是Python提供的一个第三方库,可以用来连接MySQL数据库。使用MySQLdb连接数据库可以实现用Python编写后台程序,对MySQL数据库进行读写操作。

安装MySQLdb

在使用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语句,接下来获取数据库返回的数据。最后不要忘记关闭数据库连接。

执行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可以实现对数据库的读写操作,非常实用。