SQLAlchemy数据库框架 和数据库打交道好开心呢
哈喽哈喽~今天让我来陪大家一起学习Python最受欢迎的ORM框架SQLAlchemy吧!作为一个经常和数据库打交道的小姐姐,我觉得SQLAlchemy简直就是数据库操作的得力助手呢。它能让我们用Python的方式来操作数据库,不用写复杂的SQL语句,超级方便的呢!
安装SQLAlchemy
首先,我们需要安装SQLAlchemy哦~打开终端输入以下命令就可以啦:
pip install sqlalchemy
连接数据库
让我先教大家如何创建数据库连接呢~我们以SQLite为例,因为它不需要安装额外的数据库服务器呢!
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建数据库引擎,这里使用SQLite
engine = create_engine('sqlite:///my_cute_db.db', echo=True)
# 创建基类
Base = declarative_base()
# 创建会话工厂
Session = sessionmaker(bind=engine)
小贴士:echo=True 会打印出执行的SQL语句,对我们调试很有帮助呢!
定义数据模型
接下来,让我们定义一个可爱的小表格吧!比如说,一个存储童话书信息的表格:
from sqlalchemy import Column, Integer, String, Float
class FairyTale(Base):
__tablename__ = 'fairy_tales'
id = Column(Integer, primary_key=True)
title = Column(String(100), nullable=False)
author = Column(String(50))
rating = Column(Float, default=0)
def __repr__(self):
return f"<童话书 self.title>"
看,我们定义了一个童话书表格,包含了书名、作者和评分呢!
创建表格
有了模型之后,我们需要在数据库中创建对应的表格:
# 创建所有定义的表
Base.metadata.create_all(engine)
添加数据
让我们往表格里添加一些可爱的童话书吧:
session = Session()
# 创建新的童话书记录
new_tale = FairyTale(
title='小红帽',
author='格林兄弟',
rating=4.8
)
# 添加到会话
session.add(new_tale)
# 一次添加多本书
more_tales = [
FairyTale(title='白雪公主', author='格林兄弟', rating=4.9),
FairyTale(title='灰姑娘', author='佚名', rating=4.7)
]
session.add_all(more_tales)
# 提交到数据库
session.commit()
注意事项:别忘记commit哦,不然数据不会真正保存到数据库中呢!
查询数据
现在来看看如何查询我们的童话书吧:
# 查询所有童话书
all_tales = session.query(FairyTale).all()
for tale in all_tales:
print(f"书名:{tale.title}, 作者:{tale.author}, 评分:{tale.rating}")
# 按条件查询
high_rated = session.query(FairyTale).filter(FairyTale.rating > 4.8).all()
print("\n评分高于4.8的童话书:")
for tale in high_rated:
print(tale.title)
修改和删除数据
有时候我们需要更新或删除数据:
# 修改数据
tale_to_update = session.query(FairyTale).filter_by(title='小红帽').first()
if tale_to_update:
tale_to_update.rating = 5.0
session.commit()
# 删除数据
tale_to_delete = session.query(FairyTale).filter_by(title='灰姑娘').first()
if tale_to_delete:
session.delete(tale_to_delete)
session.commit()
实践小练习
- 试着创建一个新的表格,存储你最喜欢的动漫角色信息吧!
- 尝试使用不同的查询方法,比如order_by()按评分排序。
- 添加一些约束条件,比如评分不能低于0或高于5。
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。SQLAlchemy其实超好玩的,就像是在和数据库谈恋爱一样甜蜜呢!祝大家学习愉快,Python学习节节高!