您的位置:

Python pymysql模块详解

一、连接数据库

Python pymysql模块是连接和操作MySQL数据库的一种方法。在使用pymysql模块前,我们需要先安装pymysql这个库。

我们可以通过以下方式来安装pymysql库:

pip install pymysql

在连接MySQL数据库之前,我们需要先建立一个数据库。以下示例演示如何建立一个名为testdb的数据库:

import pymysql
conn=pymysql.connect(host='localhost', port=3306, user='root',password='yourpassword',charset='utf8')
cursor=conn.cursor()
cursor.execute("create database testdb")
conn.close()

在成功连接到MySQL服务器之后,我们可以在conn.cursor()上调用.execute()方法来向MySQL服务器发送任意SQL语句。例如,可以使用以下代码显示所有数据库:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='yourpassword', db='testdb', charset='utf8')
cursor = conn.cursor()
cursor.execute("SHOW DATABASES")
for x in cursor:
    print(x)
conn.close()

以上示例中,我们使用了conn.cursor()对象的execute()方法发送SQL语句来查询数据库。在查询完毕之后,我们需要通过conn.close()方法关闭数据库连接。

二、创建数据表

在MySQL中,数据由表组成。一个表包含记录和字段。在Python和pymysql中,我们可以使用CREATE TABLE语句来创建一个新的表。

以下示例演示如何创建一个名为person的表,其中包含id、name和age三个字段:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='yourpassword', db='testdb', charset='utf8')
cursor = conn.cursor()
sql = "CREATE TABLE person (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, age INT(3))"
cursor.execute(sql)
conn.close()

在创建表之后,我们可以使用以下命令来查看表的结构:

DESCRIBE person;

三、插入数据

使用INSERT INTO语句向表中插入数据。INSERT INTO语句将带有数据的字段列和值列表组合起来,然后将它们插入到表中。

以下示例演示如何向名为person的表中插入一条数据:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='yourpassword', db='testdb', charset='utf8')
cursor = conn.cursor()
sql = "INSERT INTO person (name, age) VALUES (%s, %s)"
val = ("Mike", 25)
cursor.execute(sql, val)
conn.commit()
conn.close()

以上代码使用了参数绑定将插入的值传入到insert语句中,这种方式可以有效的避免SQL注入攻击。

四、查询数据

使用SELECT语句从表中检索数据。SELECT语句使用列名清单来指定要从表中检索的数据。可以使用WHERE子句来指定过滤条件。

以下示例演示如何从名为person的表中检索数据:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='yourpassword', db='testdb', charset='utf8')
cursor = conn.cursor()
sql = "SELECT * FROM person WHERE age > %s"
vals = (20,)
cursor.execute(sql, vals)
result = cursor.fetchall()
for row in result:
    id = row[0]
    name = row[1]
    age = row[2]
    print(f"id={id}, name={name}, age={age}")
conn.close()

以上代码展示如何使用SELECT语句从名为person的表中检索符合条件的数据,并通过fetchall()方法来获取所有记录。

五、更新数据

使用UPDATE语句来更新表中的数据。UPDATE语句使用SET子句来指定要更新的列及其新值,并使用WHERE子句来指定过滤条件。

以下示例展示如何更新名为person的表中一个指定id的记录的数据:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='yourpassword', db='testdb', charset='utf8')
cursor = conn.cursor()
sql = "UPDATE person SET age = %s WHERE id = %s"
vals = (26, 1)
cursor.execute(sql, vals)
conn.commit()
conn.close()

以上代码展示如何使用UPDATE语句来更新名为person的表中指定id的记录的年龄值。

六、删除数据

使用DELETE语句从表中删除数据。DELETE语句使用WHERE子句来指定要删除的记录。如果省略WHERE子句,将会删除表中的所有记录!

以下示例展示如何从名为person的表中删除id为1的一条记录:

conn = pymysql.connect(host='localhost', port=3306, user='root', password='yourpassword', db='testdb', charset='utf8')
cursor = conn.cursor()
sql = "DELETE FROM person WHERE id = %s"
vals = (1,)
cursor.execute(sql, vals)
conn.commit()
conn.close()

以上代码展示如何使用DELETE语句从名为person的表中删除id为1的一条记录。