Python怎么设置数据库?连接与配置步骤详解

在Python中设置数据库是开发应用程序时的常见需求,涉及数据库选择、连接配置、操作执行等步骤,以下是详细的操作指南,涵盖主流数据库(如MySQL、PostgreSQL、SQLite)的设置方法,并包含代码示例和注意事项。

选择数据库类型

根据应用场景选择合适的数据库:

  • SQLite:轻量级嵌入式数据库,适合小型应用或开发测试,无需额外服务。
  • MySQL:关系型数据库,适合Web应用,支持高并发。
  • PostgreSQL:功能强大的开源关系型数据库,支持复杂查询和扩展。
  • MongoDB:NoSQL数据库,适合非结构化数据(需额外安装pymongo库)。

安装数据库驱动

Python通过第三方库连接数据库,需先安装对应驱动:

python怎么设置数据库

# MySQL
pip install pymysql
# PostgreSQL
pip install psycopg2-binary
# SQLite(无需安装,Python内置)

数据库连接配置

SQLite连接(无需服务器)

import sqlite3
# 创建或连接数据库文件
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

MySQL连接(需服务器地址、用户名、密码)

import pymysql
conn = pymysql.connect(
    host='localhost',      # 数据库服务器地址
    user='root',          # 用户名
    password='password',  # 密码
    database='test_db',   # 数据库名
    charset='utf8mb4'     # 字符集
)
cursor = conn.cursor()

PostgreSQL连接

import psycopg2
conn = psycopg2.connect(
    host='localhost',
    user='postgres',
    password='password',
    database='test_db'
)
cursor = conn.cursor()

执行数据库操作

创建表

# SQLite/MySQL/PostgreSQL通用SQL语法
create_table_sql = """
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE
)
"""
cursor.execute(create_table_sql)
conn.commit()  # 提交事务

插入数据

# 使用参数化查询防止SQL注入
insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)"
cursor.execute(insert_sql, ('Alice', 'alice@example.com'))
conn.commit()

查询数据

cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()  # 获取所有结果
for row in rows:
    print(row)

更新和删除数据

# 更新
update_sql = "UPDATE users SET email = %s WHERE name = %s"
cursor.execute(update_sql, ('alice_new@example.com', 'Alice'))
conn.commit()
# 删除
delete_sql = "DELETE FROM users WHERE name = %s"
cursor.execute(delete_sql, ('Alice',))
conn.commit()

事务管理

数据库操作默认为自动提交模式,可通过conn.commit()手动提交或conn.rollback()回滚:

try:
    cursor.execute("INSERT INTO users VALUES (1, 'Bob', 'bob@example.com')")
    conn.commit()
except Exception as e:
    conn.rollback()
    print(f"Error: {e}")

连接池优化(高并发场景)

使用DBUtilsSQLAlchemy管理连接池,避免频繁创建连接:

python怎么设置数据库

from DBUtils.PooledDB import PooledDB
pool = PooledDB(
    creator=pymysql,
    maxconnections=6,
    host='localhost',
    user='root',
    password='password',
    database='test_db'
)
conn = pool.connection()
cursor = conn.cursor()

关闭连接

操作完成后需关闭游标和连接:

cursor.close()
conn.close()

常见问题与解决方案

问题 可能原因 解决方案
连接超时 数据库服务未启动或网络问题 检查服务状态和防火墙设置
SQL注入漏洞 直接拼接SQL字符串 使用参数化查询(如%s占位符)
字符编码错误 数据库与Python编码不一致 统一使用utf8mb4字符集

相关问答FAQs

Q1: 如何在Python中连接远程数据库?
A1: 需确保远程数据库服务器允许外部访问(如MySQL需设置bind-address=0.0.0.0并授权用户IP),连接时指定公网IP和端口,

python怎么设置数据库

conn = pymysql.connect(host='192.168.1.100', port=3306, user='root', password='password')

Q2: 如何处理数据库连接池的泄漏问题?
A2: 使用try-finallywith语句确保连接归还池中:

from contextlib import contextmanager
@contextmanager
def get_db_connection():
    conn = pool.connection()
    try:
        yield conn
    finally:
        conn.close()

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-09-21 08:40
下一篇 2025-09-21 08:55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信