在 Python 中连接 MySQL 数据库并查询数据,通常可以使用 mysql-connector-python
或 pymysql
这两个库,下面分别为你介绍它们的使用方法。
使用 mysql-connector-python
步骤 1:安装库
首先,你需要安装 mysql-connector-python
库,可以使用 pip
进行安装:
pip install mysql-connector-python
步骤 2:连接数据库并查询数据
以下是一个完整的示例代码,展示了如何连接到 MySQL 数据库、创建表、插入数据以及查询数据:
import mysql.connector# 建立数据库连接
try:connection = mysql.connector.connect(host="localhost",user="your_username",password="your_password",database="your_database")if connection.is_connected():print("成功连接到 MySQL 数据库")# 创建游标对象cursor = connection.cursor()# 创建示例表create_table_query = """CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT)"""cursor.execute(create_table_query)# 插入示例数据insert_query = "INSERT INTO employees (name, age) VALUES (%s, %s)"employees = [("Alice", 28),("Bob", 32),("Charlie", 25)]cursor.executemany(insert_query, employees)connection.commit()print(cursor.rowcount, "条记录插入成功。")# 执行查询操作select_query = "SELECT * FROM employees"cursor.execute(select_query)# 获取所有查询结果results = cursor.fetchall()# 打印查询结果print("查询结果:")for row in results:print(f"ID: {row[0]}, 姓名: {row[1]}, 年龄: {row[2]}")except mysql.connector.Error as e:print(f"连接数据库时出错: {e}")
finally:if connection.is_connected():cursor.close()connection.close()print("数据库连接已关闭")
代码解释
- 建立连接:使用
mysql.connector.connect()
方法连接到 MySQL 数据库,需要提供主机名、用户名、密码和数据库名。 - 创建游标:通过
connection.cursor()
创建一个游标对象,用于执行 SQL 语句。 - 创建表:使用
CREATE TABLE
语句创建一个名为employees
的表。 - 插入数据:使用
INSERT INTO
语句插入示例数据,executemany()
方法可以一次性插入多条记录。 - 执行查询:使用
SELECT
语句查询employees
表中的所有记录。 - 获取结果:使用
fetchall()
方法获取所有查询结果。 - 关闭连接:在操作完成后,关闭游标和数据库连接。
使用 pymysql
步骤 1:安装库
使用 pip
安装 pymysql
库:
pip install pymysql
步骤 2:连接数据库并查询数据
import pymysql# 建立数据库连接
try:connection = pymysql.connect(host="localhost",user="your_username",password="your_password",database="your_database",cursorclass=pymysql.cursors.DictCursor)if connection.open:print("成功连接到 MySQL 数据库")# 创建游标对象with connection.cursor() as cursor:# 创建示例表create_table_query = """CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT)"""cursor.execute(create_table_query)# 插入示例数据insert_query = "INSERT INTO employees (name, age) VALUES (%s, %s)"employees = [("Alice", 28),("Bob", 32),("Charlie", 25)]cursor.executemany(insert_query, employees)connection.commit()print(cursor.rowcount, "条记录插入成功。")# 执行查询操作select_query = "SELECT * FROM employees"cursor.execute(select_query)# 获取所有查询结果results = cursor.fetchall()# 打印查询结果print("查询结果:")for row in results:print(f"ID: {row['id']}, 姓名: {row['name']}, 年龄: {row['age']}")except pymysql.Error as e:print(f"连接数据库时出错: {e}")
finally:if connection.open:connection.close()print("数据库连接已关闭")
代码解释
pymysql
的使用方法与 mysql-connector-python
类似,不同之处在于连接时可以指定 cursorclass=pymysql.cursors.DictCursor
,这样查询结果将以字典形式返回,方便通过键名访问数据。
请将代码中的 your_username
、your_password
和 your_database
替换为你自己的数据库用户名、密码和数据库名。