📅  最后修改于: 2023-12-03 14:57:36.986000             🧑  作者: Mango
Python与MySQL是很好的朋友。Python提供了非常方便的MySQL驱动程序,使得程序员们可以轻松地与MySQL数据库交互。在本文中,我们将学习如何使用Python连接MySQL数据库以及进行一些常见的操作。
Python提供了很多MySQL驱动程序,比如PyMySQL
和mysql-connector-python
。这两个驱动程序都在Python 3中得到了广泛的支持和使用。在本文中,我们将使用PyMySQL
作为我们的MySQL驱动程序,因为它提供了简单易用的API。
要安装PyMySQL
,可以使用pip命令:
pip install PyMySQL
在使用Python与MySQL交互之前,我们需要先连接到MySQL数据库。使用PyMySQL
连接到MySQL数据库非常简单。以下是一个链接到MySQL数据库的示例代码:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="password", database="test")
# 关闭数据库连接
db.close()
在上面的代码中,我们使用pymysql模块打开了一个MySQL数据库连接。我们需要指定数据库的主机名、用户名、密码和数据库名称。在该连接使用结束后,我们应该关闭它以释放资源。
在我们开始向MySQL数据库插入数据之前,我们需要先创建一个数据表。以下是一个创建数据表的示例代码:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="password", database="test")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果数据表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用 execute() 方法执行 SQL,创建 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()
在上面的代码中,我们使用了CREATE TABLE
语句来创建一个名为EMPLOYEE的数据表。在此数据表中,我们定义了FIRST_NAME、LAST_NAME、AGE、SEX和INCOME等字段。
现在我们已经创建了一个名为EMPLOYEE的数据表,我们可以向其中插入一些数据了。以下是一个插入数据的示例代码:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="password", database="test")
# 使用 cursor() 方法创建一个游标对象 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语句向EMPLOYEE数据表中插入一笔数据。在执行SQL语句之前,我们需要调用db.commit()
方法提交事务以保存更改。在执行SQL语句时,如果出现错误,我们可以使用db.rollback()
方法回滚事务以撤销更改。
现在我们已经向EMPLOYEE数据表中添加了一些数据,我们可以查询它们了。以下是一个查询数据的示例代码:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="password", database="test")
# 使用 cursor() 方法创建一个游标对象 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:
first_name = row[0]
last_name = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印结果
print("first_name=%s,last_name=%s,age=%d,sex=%s,income=%d" % \
(first_name, last_name, age, sex, income))
except:
print("Error: unable to fetch data")
# 关闭数据库连接
db.close()
在上面的代码中,我们使用SQL语句查询EMPLOYEE数据表中收入大于1000的员工记录。然后,我们使用cursor.fetchall()
方法获取所有的匹配记录。最后,我们使用for循环逐行处理每一行记录。