一文读学会Python 操作MySql数据库
引言
在现代应用程序开发中,数据库是存储和管理数据的重要工具。Python 提供了多种库来与不同类型的数据库进行交互,包括 SQLite、MySQL 等。本文将详细介绍如何使用 Python 进行数据库操作,包括连接对象、游标对象的使用,创建数据库文件,以及对 SQLite 和 MySQL 数据库的基本操作。
1. 连接对象
连接对象(Connection Object)是用于与数据库建立连接的对象。通过连接对象,我们可以执行 SQL 语句,并获取查询结果。
示例代码:
import sqlite3
# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
# 执行一些数据库操作...
# 关闭连接
conn.close()
2. 游标对象
游标对象(Cursor Object)用于执行 SQL 语句并获取结果。通过游标对象,我们可以执行 SELECT
、INSERT
、UPDATE
和 DELETE
等 SQL 语句。
示例代码:
import sqlite3
# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 执行 SQL 语句
cursor.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)")
# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
3. 创建数据库文件
使用 Python 可以轻松创建一个新的数据库文件。对于 SQLite,只需调用 sqlite3.connect()
函数即可创建一个新数据库文件。
示例代码:
import sqlite3
# 创建一个新的 SQLite 数据库文件
conn = sqlite3.connect('new_database.db')
# 关闭连接
conn.close()
4. 操作 SQLite
SQLite 是一个轻量级的关系型数据库管理系统,不需要单独的服务器进程或系统配置。下面是一个完整的例子,演示如何使用 Python 操作 SQLite 数据库。
示例代码:
import sqlite3
# 连接到 SQLite 数据库(如果不存在则会创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL
)
''')
# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', 'alice@example.com'))
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Bob', 'bob@example.com'))
# 提交事务
conn.commit()
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute("UPDATE users SET email = ? WHERE name = ?", ('alice_new@example.com', 'Alice'))
conn.commit()
# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ('Bob',))
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
5. 下载安装 MySQL
MySQL 是一个广泛使用的关系型数据库管理系统。你可以从 MySQL 官方网站 下载适合你操作系统的 MySQL 安装包,并按照安装向导进行安装。
6. 安装 PyMySQL
PyMySQL 是一个纯 Python 实现的 MySQL 客户端库。你可以使用 pip 命令来安装 PyMySQL。
安装命令:
pip install pymysql
7. 连接数据库
使用 PyMySQL 连接到 MySQL 数据库非常简单。你需要提供数据库的主机名、用户名、密码和数据库名称。
示例代码:
import pymysql
# 连接到 MySQL 数据库
conn = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database',
charset='utf8mb4'
)
# 创建游标对象
cursor = conn.cursor()
# 执行 SQL 语句
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))")
# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
8. 创建数据表
在连接到数据库后,可以使用 CREATE TABLE
语句来创建新的数据表。
示例代码:
import pymysql
# 连接到 MySQL 数据库
conn = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database',
charset='utf8mb4'
)
# 创建游标对象
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
)
''')
# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
9. 操作 MySQL 数据表
以下是一些常见的 MySQL 数据表操作,包括插入、查询、更新和删除数据。
示例代码:
import pymysql
# 连接到 MySQL 数据库
conn = pymysql.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database',
charset='utf8mb4'
)
# 创建游标对象
cursor = conn.cursor()
# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ('Alice', 'alice@example.com'))
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ('Bob', 'bob@example.com'))
# 提交事务
conn.commit()
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute("UPDATE users SET email = %s WHERE name = %s", ('alice_new@example.com', 'Alice'))
conn.commit()
# 删除数据
cursor.execute("DELETE FROM users WHERE name = %s", ('Bob',))
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
结论
本文详细介绍了如何使用 Python 操作数据库,包括连接对象和游标对象的使用,创建数据库文件,以及对 SQLite 和 MySQL 数据库的基本操作。通过这些知识,你可以更高效地管理和操作数据库,为你的应用程序提供强大的数据支持。
扩展阅读
- SQLite 官方文档
- MySQL 官方文档
- PyMySQL 文档
- Real Python - Working with Databases in Python
- W3Schools - Python MySQL Tutorial
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)