说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 提供了多种与数据库交互的方式,支持各种数据库管理系统(DBMS),如 SQLite、MySQL、PostgreSQL、MongoDB 等。对数据的操作包括连接、创建表、插入数据、查询数据、更新数据和删除数据。
Python 的 sqlite3 内置模块是用于与 SQLite 数据库进行交互的标准库,提供了一系列便捷的函数来执行数据库操作。SQLite 是一个轻量级、嵌入式的数据库引擎,适合小型应用和本地开发。下面详细介绍 Python SQLite 的常见操作,包括连接数据库、创建表、插入数据、查询数据、更新数据和删除数据。
import sqlite3
# 连接到 SQLite 数据库(如果数据库不存在,将创建一个数据库文件)
conn = sqlite3.connect('example.db')
# 连接到内存中的 SQLite 数据库
# conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
''')
conn.commit()
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 25))
conn.commit()
# 批量插入数据
users = [('Bob', 30), ('Charlie', 35)]
cursor.executemany('INSERT INTO users (name, age) VALUES (?, ?)', users)
conn.commit()
# 查询数据并打印结果
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute('UPDATE users SET age = ? WHERE name = ?', (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute('DELETE FROM users WHERE name = ?', ('Alice',))
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
使用上下文管理器可以确保数据库连接在操作完成后自动关闭:
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
使用 PyMySQL 操作 MySQL 数据库也是一种常见的方法。PyMySQL 是一个纯 Python 实现的 MySQL 客户端,使用方便。以下是简化的介绍,涵盖常见功能,并通过代码注释进行说明。
安装:
pip install PyMySQL
示例:
import pymysql
# 连接到 MySQL 数据库
conn = pymysql.connect(
host='localhost', # 数据库主机地址
user='yourusername', # 数据库用户名
password='yourpassword', # 数据库密码
database='testdb' # 数据库名称
)
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
)
''')
conn.commit()
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
conn.commit()
# 批量插入数据
users = [('Bob', 30), ('Charlie', 35)]
cursor.executemany('INSERT INTO users (name, age) VALUES (%s, %s)', users)
conn.commit()
# 查询数据并打印结果
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute('UPDATE users SET age = %s WHERE name = %s', (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute('DELETE FROM users WHERE name = %s', ('Alice',))
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
使用 PyMySQL 和上下文管理器:
import pymysql
from contextlib import contextmanager
# 定义一个上下文管理器函数来管理数据库连接
@contextmanager
def get_db_connection():
conn = pymysql.connect(
host='localhost', # 数据库主机地址
user='yourusername', # 数据库用户名
password='yourpassword', # 数据库密码
database='testdb' # 数据库名称
)
try:
yield conn
finally:
conn.close()
# 使用上下文管理器进行数据库操作
with get_db_connection() as conn:
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
)
''')
conn.commit()
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
conn.commit()
# 批量插入数据
users = [('Bob', 30), ('Charlie', 35)]
cursor.executemany('INSERT INTO users (name, age) VALUES (%s, %s)', users)
conn.commit()
# 查询数据并打印结果
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute('UPDATE users SET age = %s WHERE name = %s', (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute('DELETE FROM users WHERE name = %s', ('Alice',))
conn.commit()
# 关闭游标
cursor.close()
这个示例涵盖了 Python 使用 PyMySQL 操作 MySQL 数据库的基本功能,包括连接数据库、创建表、插入数据、查询数据、更新数据和删除数据。根据需要,可以扩展和修改这些代码以适应具体的应用场景。
使用 mysqlclient 也是操作 MySQL 数据库的常见方法。mysqlclient 是 Python 的 MySQLdb 模块的一个分支,提供了对 MySQL 的接口。下面是一个简化的示例,展示如何使用 mysqlclient 进行常见数据库操作,并使用上下文管理器确保资源的正确管理。
首先,需要安装 mysqlclient:
pip install mysqlclient
使用 mysqlclient 和上下文管理器
import MySQLdb
from contextlib import contextmanager
# 定义一个上下文管理器函数来管理数据库连接
@contextmanager
def get_db_connection():
conn = MySQLdb.connect(
host='localhost', # 数据库主机地址
user='yourusername', # 数据库用户名
passwd='yourpassword', # 数据库密码
db='testdb' # 数据库名称
)
try:
yield conn
finally:
conn.close()
# 使用上下文管理器进行数据库操作
with get_db_connection() as conn:
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT
)
''')
conn.commit()
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
conn.commit()
# 批量插入数据
users = [('Bob', 30), ('Charlie', 35)]
cursor.executemany('INSERT INTO users (name, age) VALUES (%s, %s)', users)
conn.commit()
# 查询数据并打印结果
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute('UPDATE users SET age = %s WHERE name = %s', (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute('DELETE FROM users WHERE name = %s', ('Alice',))
conn.commit()
# 关闭游标
cursor.close()
当使用 Python 操作 PostgreSQL 数据库时,通常会使用 psycopg2 库,它是 PostgreSQL 数据库的 Python 客户端。以下是一个简化的示例,涵盖常见功能,并通过代码注释进行说明。
首先,需要安装 psycopg2:
pip install psycopg2
Python 操作 PostgreSQL 示例
import psycopg2
from psycopg2 import Error
from contextlib import contextmanager
# 定义一个上下文管理器函数来管理数据库连接
@contextmanager
def get_db_connection():
try:
# 连接到 PostgreSQL 数据库
conn = psycopg2.connect(
host='localhost', # 数据库主机地址
database='testdb', # 数据库名称
user='yourusername', # 数据库用户名
password='yourpassword' # 数据库密码
)
yield conn
except Error as e:
print(f"Error connecting to PostgreSQL database: {e}")
finally:
if conn:
conn.close()
# 使用上下文管理器进行数据库操作
with get_db_connection() as conn:
try:
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
age INT
)
''')
conn.commit()
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
conn.commit()
# 批量插入数据
users = [('Bob', 30), ('Charlie', 35)]
cursor.executemany('INSERT INTO users (name, age) VALUES (%s, %s)', users)
conn.commit()
# 查询数据并打印结果
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute('UPDATE users SET age = %s WHERE name = %s', (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute('DELETE FROM users WHERE name = %s', ('Alice',))
conn.commit()
# 关闭游标
cursor.close()
except Error as e:
print(f"Error executing PostgreSQL operation: {e}")
当使用 Python 操作 PostgreSQL 数据库时,psycopg2 是一个常用的第三方库,它提供了 PostgreSQL 数据库的接口。下面是一个简化的示例,演示如何使用 psycopg2 进行常见的数据库操作,并通过代码注释进行说明。
首先,需要安装 psycopg2:
pip install psycopg2
Python 操作 PostgreSQL 示例
import psycopg2
from psycopg2 import Error
from contextlib import contextmanager
# 定义一个上下文管理器函数来管理数据库连接
@contextmanager
def get_db_connection():
try:
# 连接到 PostgreSQL 数据库
conn = psycopg2.connect(
host='localhost', # 数据库主机地址
database='testdb', # 数据库名称
user='yourusername', # 数据库用户名
password='yourpassword' # 数据库密码
)
yield conn
except Error as e:
print(f"Error connecting to PostgreSQL database: {e}")
finally:
if conn:
conn.close()
# 使用上下文管理器进行数据库操作
with get_db_connection() as conn:
try:
cursor = conn.cursor()
# 创建表(如果表不存在)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
age INT
)
''')
conn.commit()
# 插入数据
cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', ('Alice', 25))
conn.commit()
# 批量插入数据
users = [('Bob', 30), ('Charlie', 35)]
cursor.executemany('INSERT INTO users (name, age) VALUES (%s, %s)', users)
conn.commit()
# 查询数据并打印结果
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute('UPDATE users SET age = %s WHERE name = %s', (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute('DELETE FROM users WHERE name = %s', ('Alice',))
conn.commit()
# 关闭游标
cursor.close()
except Error as e:
print(f"Error executing PostgreSQL operation: {e}")
Python 在操作数据库的生态系统中拥有丰富和多样化的工具和库,适用于多种数据库类型和应用场景。以下是对 Python 操作数据库生态的整体概述:
数据库连接与驱动:
Python 提供了多种数据库的连接驱动,包括但不限于:
ORM(对象关系映射)工具:
Python 的 ORM 工具简化了数据库操作,允许开发者使用面向对象的方式操作数据库,而不是直接编写 SQL 查询语句。流行的 ORM 包括 SQLAlchemy,它支持多种数据库,并提供了高级的查询构建、事务管理和数据库连接池等功能。
数据处理与分析:
数据处理库如 pandas 提供了灵活且高效的数据结构和数据分析工具,能够处理和转换数据,支持从数据库中读取数据进行分析和处理。科学计算库如 NumPy 和 SciPy 提供了多维数组对象和科学计算函数,对于数值计算和数据分析尤为有用。
大数据处理与分布式计算:
对于大规模数据集,Python 通过 PySpark 提供了与 Apache Spark 的集成,使得能够利用 Spark 的分布式计算能力处理大数据和复杂计算任务。
数据可视化:
Python 提供了多种数据可视化工具和库,如 Matplotlib、Seaborn、Plotly 和 Bokeh,可以生成各种静态和交互式图表,用于数据分析结果的展示和分享。
Web 开发与 API 接口:
Python 在 Web 开发中广泛应用,通过诸如 Django 和 Flask 等框架,可以快速构建支持数据库操作和数据处理的 Web 应用。对于与外部数据接口的交互,Python 提供了 requests 等库,用于发送 HTTP 请求和处理 API 响应数据。
数据安全与管理:
Python 提供了多种加密、哈希和安全相关的库,用于数据的安全传输和存储。数据库管理方面,Python 的库如 alembic 和 django-migrations 管理数据库迁移和版本控制,保证数据库结构的一致性和管理的可追溯性。
Python 生态系统中的这些工具和库使得开发者能够在各种数据库和数据处理场景下,快速、高效地完成数据操作、分析和应用开发。无论是小型项目还是大规模数据处理,Python 都提供了丰富的解决方案和支持。
(完)
更新时间:June 23, 2024, 9:34 a.m. 标签:python 数据库 io