跳转至

第五章:Python 集成

基本使用

连接数据库

import sqlite3

# 连接数据库(不存在则创建)
conn = sqlite3.connect('example.db')

# 创建游标
cursor = conn.cursor()

# 关闭连接
conn.close()

创建表

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    )
''')
conn.commit()

CRUD 操作

# 插入
cursor.execute(
    "INSERT INTO users (name, email) VALUES (?, ?)",
    ('Alice', 'alice@example.com')
)
conn.commit()

# 查询
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

# 更新
cursor.execute(
    "UPDATE users SET name = ? WHERE id = ?",
    ('Alice2', 1)
)
conn.commit()

# 删除
cursor.execute("DELETE FROM users WHERE id = ?", (1,))
conn.commit()

使用 ORM

SQLAlchemy

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')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

# 添加用户
user = User(name='Alice', email='alice@example.com')
session.add(user)
session.commit()

异步操作

aiosqlite

import aiosqlite

async def main():
    async with aiosqlite.connect('example.db') as db:
        async with db.execute("SELECT * FROM users") as cursor:
            async for row in cursor:
                print(row)

# 运行
import asyncio
asyncio.run(main())

小结

Python 集成要点:

  • 基本使用:sqlite3 模块
  • CRUD 操作:execute()、fetchall()
  • ORM:SQLAlchemy
  • 异步:aiosqlite

下一章我们将学习事务处理。