Debian Python数据库连接如何操作
导读:Debian 上使用 Python 连接数据库的完整操作指南 一 环境准备 更新系统并安装基础工具: 命令:sudo apt update && sudo apt install -y python3 python3-p...
Debian 上使用 Python 连接数据库的完整操作指南
一 环境准备
- 更新系统并安装基础工具:
- 命令:
sudo apt update & & sudo apt install -y python3 python3-pip
- 命令:
- 建议使用虚拟环境隔离依赖:
- 命令:
python3 -m venv venv & & source venv/bin/activate
- 命令:
- 在虚拟环境中安装所需数据库驱动(见下表)。
二 安装驱动与准备数据库
- 常见数据库与驱动安装一览:
| 数据库 | 驱动与安装 | 备注 |
|---|---|---|
| MySQL | pip3 install mysql-connector-python 或 pip3 install PyMySQL;系统包可用 python3-mysqldb |
远程访问需授权并开放端口 |
| PostgreSQL | pip3 install psycopg2-binary(或 psycopg2);系统包可用 python3-psycopg2 |
建议先安装 libpq-dev 再编译 |
| SQLite | 无需安装(Python 标准库 sqlite3) |
文件型数据库,零配置 |
- 安装 PostgreSQL 开发库(编译 psycopg2 时常用):
sudo apt install -y libpq-dev - 启动数据库服务(若本机安装):
- MySQL:
sudo systemctl start mysql - PostgreSQL:
sudo systemctl start postgresql
- MySQL:
- 防火墙放行端口(如启用防火墙):3306(MySQL)、5432(PostgreSQL)。
三 连接与操作示例
-
通用要点:
- 使用参数化查询防注入(如
%s、%({ name} )s占位符)。 - 写入操作需
commit();查询后及时fetch*()与关闭游标/连接。 - 生产环境建议用环境变量或配置文件管理凭据,避免硬编码。
- 使用参数化查询防注入(如
-
MySQL 示例(mysql-connector-python)
import mysql.connector from mysql.connector import Error config = { 'user': 'your_username', 'password': 'your_password', 'host': '127.0.0.1', 'database': 'your_database', 'raise_on_warnings': True } try: cnx = mysql.connector.connect(**config) cur = cnx.cursor() cur.execute("SELECT VERSION()") print("MySQL version:", cur.fetchone()) except Error as e: print("MySQL error:", e) finally: if cnx.is_connected(): cur.close() cnx.close()可用
pip3 install mysql-connector-python或pip3 install PyMySQL安装驱动。 -
PostgreSQL 示例(psycopg2)
import psycopg2 try: conn = psycopg2.connect( dbname="your_database", user="your_username", password="your_password", host="127.0.0.1", port="5432" ) cur = conn.cursor() cur.execute("SELECT version(); ") print("PostgreSQL version:", cur.fetchone()) except Exception as e: print("PostgreSQL error:", e) finally: if conn: cur.close() conn.close()推荐:
pip3 install psycopg2-binary;若从源码编译,先装libpq-dev。 -
SQLite 示例(内置模块)
import sqlite3 conn = sqlite3.connect('example.db') cur = conn.cursor() cur.execute("SELECT sqlite_version(); ") print("SQLite version:", cur.fetchone()) conn.close()SQLite 无需额外安装,适合本地测试与轻量场景。
四 常见问题与排查
- 服务未启动:确认
sudo systemctl start mysql或sudo systemctl start postgresql已执行;必要时设置开机自启。 - 连接被拒绝或超时:
- 核对 host、port、用户名、密码、数据库名。
- 检查数据库是否允许来自当前主机的连接(如 PostgreSQL 的
pg_hba.conf、MySQL 的授权与bind-address)。 - 防火墙放行 3306/5432。
- 驱动安装失败(psycopg2 编译问题):先安装
libpq-dev再pip3 install psycopg2,或直接用psycopg2-binary。 - 权限不足:在数据库中为对应用户授予所需权限(如
GRANT ALL PRIVILEGES ON DATABASE db TO user;)。 - 凭据安全:不要硬编码,使用环境变量或配置文件管理敏感信息。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Python数据库连接如何操作
本文地址: https://pptw.com/jishu/762141.html
