上一篇
python连接数据库语句怎么写
- 数据库
- 2025-07-23
- 4
Python连接数据库常用库如sqlite3、pymysql,语句示例:conn=sqlite3.connect(‘db.sqlite’)
Python连接数据库的核心在于使用相应的数据库驱动库,并通过标准接口完成连接、操作与关闭,以下是常见数据库的连接方法与示例:
SQLite数据库(Python内置支持)
适用场景:轻量级本地存储,无需安装数据库服务
驱动模块:sqlite3(Python标准库内置)
连接语句:
import sqlite3
# 连接数据库(自动创建文件)
conn = sqlite3.connect('example.db')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL语句(如建表)
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# 提交事务并关闭连接
conn.commit()
conn.close()
特点:
- 文件型数据库,数据存储在
.db文件中 - 无需服务器配置,直接通过文件路径访问
- 适合原型开发、测试或小型应用
MySQL数据库
适用场景:中型应用,需要网络访问的数据库服务
驱动模块:PyMySQL 或 mysql-connector-python
安装命令:
pip install pymysql # 或 pip install mysql-connector-python
连接语句(PyMySQL示例):
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost', # 数据库地址
user='root', # 用户名
password='123456', # 密码
database='test_db', # 数据库名称
charset='utf8mb4' # 编码
)
# 创建游标并执行SQL
cursor = conn.cursor()
cursor.execute('SELECT VERSION()') # 测试连接
print(cursor.fetchone()) # 输出MySQL版本
conn.close()
关键参数:
host:数据库服务器地址(如0.0.1或localhost)port:默认端口为3306(需与数据库配置一致)charset:建议设置为utf8mb4以支持表情符号等特殊字符
PostgreSQL数据库
适用场景:复杂业务场景,需要高扩展性
驱动模块:psycopg2
安装命令:
pip install psycopg2
连接语句:
import psycopg2
# 连接数据库(DSN格式)
conn = psycopg2.connect(
dsn="dbname='test_db' user='postgres' password='123456' host='localhost' port='5432'"
)
# 执行SQL并获取结果
cursor = conn.cursor()
cursor.execute('SELECT VERSION()')
print(cursor.fetchone())
conn.close()
特点:
- 默认端口为5432,支持复杂数据类型(如JSON、数组)
- 需提前创建数据库和用户
MongoDB数据库(非关系型)
适用场景:文档型存储,高并发读写
驱动模块:pymongo
安装命令:
pip install pymongo
连接语句:
from pymongo import MongoClient
# 连接MongoDB(URI格式)
client = MongoClient('mongodb://localhost:27017/')
# 选择数据库和集合
db = client['test_db']
collection = db['users']
# 插入文档
doc = {'name': 'Alice', 'age': 25}
collection.insert_one(doc)
# 查询文档
for item in collection.find():
print(item)
关键参数:
- URI中可包含用户名密码(如
mongodb://user:pass@localhost:27017/) - 默认端口为27017,无需预创建数据库
Redis数据库(键值存储)
适用场景:缓存、会话管理
驱动模块:redis
安装命令:
pip install redis
连接语句:
import redis
# 连接Redis
r = redis.Redis(
host='localhost', # 地址
port=6379, # 默认端口
password=None # 若有密码需填写
)
# 设置键值对
r.set('key', 'value')
# 获取值
print(r.get('key')) # 输出 b'value'
特点:
- 纯内存操作,高性能
- 支持持久化(RDB/AOF)
主流数据库对比表
| 数据库类型 | 驱动/模块 | 默认端口 | 连接字符串示例 | 适用场景 |
|---|---|---|---|---|
| SQLite | sqlite3(内置) | sqlite3.connect('example.db') |
本地存储、测试 | |
| MySQL | PyMySQL/mysql-connector | 3306 | pymysql.connect(host=...) |
中小型Web应用、LAMP栈 |
| PostgreSQL | psycopg2 | 5432 | postgresql://user:pass@host/db |
复杂业务、高扩展性需求 |
| MongoDB | pymongo | 27017 | mongodb://user:pass@host:port |
高并发、文档存储 |
| Redis | redis | 6379 | redis.Redis(host='localhost') |
缓存、会话、消息队列 |
常见问题与解决方案(FAQs)
如何判断数据库连接是否成功?
- 测试查询:执行简单SQL(如
SELECT 1)或调用ping()方法(如Redis)。 - 异常处理:用
try-except捕获连接错误,try: conn = pymysql.connect(...) print("连接成功") except pymysql.Error as e: print(f"连接失败: {e}")
不同数据库的密码忘记怎么办?
- MySQL:通过命令行重置(如
ALTER USER 'root' IDENTIFIED BY 'new_pass';)或使用管理工具(如phpMyAdmin、SqlYog)重置。 - PostgreSQL:修改
pg_hba.conf文件后重启服务,或通过SQL语句ALTER USER postgres WITH PASSWORD 'new_pass';。 - MongoDB:进入
admin数据库后执行db.changeUserPassword("user", "new_pass");。 - Redis:若未设置密码,可直接通过配置文件
redis.conf添加requirepass项
