from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建SQLite数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)
# 创建会话工厂
Session = sessionmaker(bind=engine)
session = Session()
# 创建基础模型类
Base = declarative_base()
# 创建数据表模型
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
email = Column(String(100), nullable=False)
# 创建数据表
Base.metadata.create_all(engine)
# 插入数据
new_user = User(name='Alice', email='alice@example.com')
session.add(new_user)
session.commit()
# 查询数据
users = session.query(User).all()
for user in users:
print(user.name, user.email)
# 更新数据
user = session.query(User).filter_by(name='Alice').first()
user.email = 'new_email@example.com'
session.commit()
# 删除数据
user = session.query(User).filter_by(name='Alice').first()
session.delete(user)
session.commit()
上述例子中,我们首先创建了一个SQLite数据库引擎,并将其绑定到会话工厂。然后,我们创建了一个基础模型类Base
,以及一个名为User
的数据表模型类,通过继承Base
来定义了数据库表结构。
- 在插入数据时,我们创建了一个
User
对象并将其添加到会话中,然后调用session.commit()
进行提交。 - 在查询数据时,我们使用
session.query(User).all()
获取所有用户记录,并通过遍历打印每个用户的姓名和邮箱。 - 在更新数据时,我们首先使用
session.query(User).filter_by(name='Alice').first()
找到要更新的用户记录,然后修改其邮箱字段,并调用session.commit()
进行提交。 - 在删除数据时,我们首先使用
session.query(User).filter_by(name='Alice').first()
找到要删除的用户记录,然后调用session.delete(user)
将其从会话中删除,并最后调用session.commit()
进行提交。
这个例子展示了如何使用SQLAlchemy和SQLite进行数据库操作,你可以根据自己的需求和具体的数据表结构进行适当的调整。请注意,在使用SQLite时,只需指定数据库文件路径即可,无需额外的数据库服务器配置。