Python与数据库之间的交互通常通过数据库适配器(或a称为驱动)实现,这些适配器允许Python程序以一致的方式与各种数据库(如MySQL、SQLite、PostgreSQL等)进行交互。下面是一些基础的Python数据库操作,以SQLite为例,因为它是轻量级的,通常与Python一起分发。
1. 安装SQLite适配器
Python标准库已经包含了SQLite适配器,所以无需额外安装。
2. 连接到SQLite数据库
|
import sqlite3 |
|
|
|
# 连接到SQLite数据库 |
|
# 如果数据库不存在,那么它将被创建 |
|
# 如果数据库存在,那么将连接到该数据库 |
|
conn = sqlite3.connect('example.db') |
|
|
|
# 创建一个Cursor对象,并执行SQL查询 |
|
cursor = conn.cursor() |
3. 执行SQL查询
|
# 创建一个表 |
|
cursor.execute(''' |
|
CREATE TABLE IF NOT EXISTS users ( |
|
id INTEGER PRIMARY KEY, |
|
name TEXT NOT NULL, |
|
age INTEGER |
|
) |
|
''') |
|
|
|
# 插入数据 |
|
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 25)) |
|
|
|
# 查询数据 |
|
cursor.execute('SELECT * FROM users') |
|
rows = cursor.fetchall() |
|
for row in rows: |
|
print(row) |
|
|
|
# 更新数据 |
|
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (30, 'Alice')) |
|
|
|
# 删除数据 |
|
cursor.execute("DELETE FROM users WHERE name = ?", ('Alice',)) |
4. 提交更改并关闭连接
|
# 提交(保存)更改 |
|
conn.commit() |
|
|
|
# 关闭连接 |
|
conn.close() |
5. 错误处理
当与数据库交互时,可能会遇到各种错误(如SQL语法错误、数据库连接问题等)。因此,使用try...except块来处理这些错误是很重要的。
|
try: |
|
# ... 数据库操作 ... |
|
except sqlite3.Error as e: |
|
print("Database error:", e) |
|
finally: |
|
# 关闭连接 |
|
if conn: |
|
conn.close() |
6. 使用ORM(对象关系映射)
虽然直接使用SQL语句与数据库交互是可行的,但使用ORM(如SQLAlchemy)可以使代码更简洁、易读、易维护。
这只是一个简单的Python数据库操作入门。在实际应用中,你可能还需要处理更复杂的查询、索引、事务等。每个数据库都有其特定的语法和功能,因此最好查阅相关数据库的官方文档以获取更详细的信息。
在Python中连接数据库时,设置环境变量是一种常见做法,这样可以避免在代码中硬编码数据库连接信息,如用户名、密码、数据库名等。这样可以使代码更加安全、可移植,并且便于管理不同的环境(如开发环境、测试环境、生产环境)。
以下是如何在Python中设置和使用环境变量的步骤:
1. 设置环境变量
环境变量可以在操作系统级别设置,也可以在Python代码中设置。
在操作系统级别设置环境变量(以Linux和macOS为例):
1. 打开终端。
2. 使用export命令设置环境变量,例如:
bash
|
export DATABASE_URL="sqlite:///path/to/your/database.db" |
或者,你可以将这条命令添加到~/.bashrc、~/.bash_profile或~/.zshrc(取决于你使用的shell)中,这样每次打开新的终端时,环境变量就会自动设置。
在Windows上设置环境变量:
1. 右键点击“此电脑”或“计算机”,选择“属性”。
2. 点击“高级系统设置”。
3. 在“系统属性”窗口中点击“环境变量”按钮。
4. 在“环境变量”窗口中,点击“新建”来添加新的环境变量。
在Python代码中设置环境变量:
虽然不推荐在代码中直接设置环境变量(因为这会使得环境信息依赖于特定的代码执行),但有时出于测试或演示目的,你可能需要这样做。
|
import os |
|
|
|
os.environ['DATABASE_URL'] = 'sqlite:///path/to/your/database.db' |
2. 在Python代码中使用环境变量
在Python代码中,你可以使用os.environ字典来访问环境变量。
|
import os |
|
import sqlite3 |
|
|
|
# 从环境变量中获取数据库连接字符串 |
|
database_url = os.environ.get('DATABASE_URL') |
|
|
|
# 解析连接字符串并连接到数据库 |
|
if database_url.startswith('sqlite://'): |
|
# 对于SQLite,连接字符串通常是一个文件路径 |
|
conn = sqlite3.connect(database_url[len('sqlite://'):]) |
|
else: |
|
# 对于其他数据库,你可能需要使用不同的库和连接方法 |
|
# 例如,对于PostgreSQL,你可能会使用psycopg2库 |
|
# 对于MySQL,你可能会使用mysql-connector-python库 |
|
# 这里只是一个示例,并不适用于其他数据库 |
|
conn = None |
|
|
|
# ... 执行数据库操作 ... |
|
|
|
# 关闭连接 |
|
if conn: |
|
conn.close() |
3. 使用配置文件
除了环境变量,另一种常见的做法是使用配置文件(如.env文件或.ini文件)来存储数据库连接信息。你可以使用Python的configparser模块或第三方库(如python-dotenv)来读取这些配置文件。
例如,使用python-dotenv库:
首先,安装python-dotenv库:
bash
|
pip install python-dotenv |
然后,创建一个.env文件,并在其中设置环境变量:
|
DATABASE_URL=sqlite:///path/to/your/database.db |
最后,在Python代码中加载.env文件并使用环境变量:
|
from dotenv import load_dotenv |
|
import os |
|
|
|
# 加载.env文件 |
|
load_dotenv() |
|
|
|
# 获取环境变量 |
|
database_url = os.environ.get('DATABASE_URL') |
|
|
|
# 连接数据库 |
|
# ... |
使用配置文件的好处是你可以将敏感信息(如密码)从代码中分离出来,使得代码更安全、更易于管理。