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

相关推荐

  • 服务器入侵检测推荐哪家好?企业级防黑客入侵系统排行

    构建高效的服务器安全防御体系,核心在于建立“实时监测、精准阻断、快速溯源”的闭环机制,单纯依赖防火墙等边界防御已无法应对当下的高级持续性威胁(APT),企业必须部署专业的入侵检测系统(IDS)和入侵防御系统(IPS),结合威胁情报与人工安全运营,才能有效降低数据泄露风险,最有效的防御策略是采用“主机层HIDS……

    2026-03-16
    004
  • 服务器控制台密码在哪里

    服务器控制台密码通常需在初始化设置时自行创建,或通过服务器厂商提供的默认凭证(如IPMI、iLO等管理接口)访问,若为云服务器,需通过控制台或密钥对登录,具体位置取决于服务器类型及安全配置,建议查阅官方文档或联系管理员获取准确指引

    2025-05-05
    0023
  • 数据库文件损坏打不开,要怎么才能恢复里面的数据?

    文件数据库文件,无论是个人使用的SQLite数据库,还是企业级应用中的关键数据文件,其丢失或损坏都可能带来灾难性的后果,在许多情况下,这些宝贵的文件是有机会被恢复的,成功恢复的关键在于采取正确的步骤、使用合适的工具,并保持冷静,本文将系统地介绍如何应对文件数据库文件的丢失与损坏,并提供一套完整的恢复指南,黄金法……

    2025-10-03
    0027
  • 除了慢查询日志外,还有哪些好方法可以用来查看数据库性能?

    数据库性能是现代应用架构的基石,其优劣直接关系到用户体验、系统稳定性和业务效率,一个缓慢的数据库可能导致页面加载迟缓、交易失败,甚至在高峰期引发系统崩溃,掌握如何系统地查看和评估数据库性能,是每一位开发者和运维人员的必备技能,这并非一项单一的操作,而是一个结合了指标监控、工具使用和逻辑推理的综合过程,核心性能指……

    2025-10-10
    0010

发表回复

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

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信