在 Python 中,可以使用多种库来连接并操作数据库。常用的库有 sqlite3
、psycopg2
(用于 PostgreSQL)、PyMySQL
(用于 MySQL)、SQLAlchemy
(一个 ORM 工具,支持多种数据库)。下面以 SQLite 和 MySQL 为例,介绍如何连接并操作数据库。
使用 sqlite3
库操作 SQLite 数据库
- 连接数据库
python
import sqlite3
# 连接到 SQLite 数据库(如果数据库不存在,会自动创建)
conn = sqlite3.connect('example.db')
# 创建游标对象
cursor = conn.cursor()
- 创建表
python
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL)''')
- 插入数据
python
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
# 提交事务
conn.commit()
- 查询数据
python
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
- 更新数据
python
# 更新数据
cursor.execute("UPDATE users SET age = 26 WHERE name = 'Bob'")
# 提交事务
conn.commit()
- 删除数据
python
# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Alice'")
# 提交事务
conn.commit()
- 关闭连接
python
# 关闭游标和连接
cursor.close()
conn.close()
使用 PyMySQL
库操作 MySQL 数据库
- 安装 PyMySQL
sh
pip install pymysql
- 连接数据库
python
import pymysql
# 连接到 MySQL 数据库
conn = pymysql.connect(
host='localhost',
user='yourusername',
password='yourpassword',
database='yourdatabase'
)
# 创建游标对象
cursor = conn.cursor()
- 创建表
python
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT NOT NULL)''')
- 插入数据
python
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
# 提交事务
conn.commit()
- 查询数据
python
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
- 更新数据
python
# 更新数据
cursor.execute("UPDATE users SET age = 26 WHERE name = 'Bob'")
# 提交事务
conn.commit()
- 删除数据
python
# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Alice'")
# 提交事务
conn.commit()
- 关闭连接
python
# 关闭游标和连接
cursor.close()
conn.close()
使用 SQLAlchemy
库操作数据库
- 安装 SQLAlchemy
sh
pip install sqlalchemy
- 连接数据库
python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)
# 创建基类
Base = declarative_base()
# 定义数据表
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String)
age = Column(Integer)
# 创建数据表
Base.metadata.create_all(engine)
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
- 插入数据
python
# 插入数据
new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()
- 查询数据
python
# 查询数据
users = session.query(User).all()
for user in users:
print(user.name, user.age)
- 更新数据
python
# 更新数据
user = session.query(User).filter_by(name='Alice').first()
user.age = 31
session.commit()
- 删除数据
python
# 删除数据
user = session.query(User).filter_by(name='Alice').first()
session.delete(user)
session.commit()
这三个示例展示了如何使用 sqlite3
、PyMySQL
和 SQLAlchemy
库连接并操作数据库。根据具体需求和数据库类型,可以选择合适的库来实现数据库操作。