顾乔芝士网

持续更新的前后端开发技术栈

SQLAlchemy数据库框架 和数据库打交道好开心呢

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()

实践小练习

  1. 试着创建一个新的表格,存储你最喜欢的动漫角色信息吧!
  2. 尝试使用不同的查询方法,比如order_by()按评分排序。
  3. 添加一些约束条件,比如评分不能低于0或高于5。

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。SQLAlchemy其实超好玩的,就像是在和数据库谈恋爱一样甜蜜呢!祝大家学习愉快,Python学习节节高!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言