python SQLAlchemy ORM——从零开始学习 01 安装库

打印 上一主题 下一主题

主题 830|帖子 830|积分 2490

01基础库

1-1安装

依靠库:sqlalchemy
  1. pip install sqlalchemy
  2. #直接安装即可
复制代码
1-2导入使用

这里讲解思绪【个人的理解】,详细写其实就是这个框架:

  • 导入必要的接口【有创建engine以及declarative_base】

    • 通过create_engine接口创建engine,根据翻译可以翻译成引擎,和发动机一样,有了这个才能驱动数据库启动,但创建engine的接口担当的是一个针对 PostgreSQL的对象,对象的示例如:postgresql+psycopg2://scott:tiger@localhost:5432/mydatabase


    • 以下是官方对于这个engine的表明


  • 创建引擎
    1. db_url = "sqlite:///database.db"        #本地的sqlite数据库的地址,没有则自动创建
    2. engine = create_engine(db_url)                #调用数据库的url地址创建引擎
    复制代码
    其中主要根据 sqlalchemy中的create_engine接口进行引擎的创建
    create_engine(url: str | URL) -> Engine
    其中URL就是上文提到的PostgreSQL的对象。这里是用sqlite,其他兼容数据库也可以使用,参照下图:
    <img alt="image-20250105212817594" loading="lazy">

  • 定义一个 sqlalchemyORM接口的基类,用于后续创建自定义的表、以及增删查改
    1. Base = declarative_base()
    复制代码
1-3 创建自己的表


  • 前面的逻辑和导入使用是重合的,主要就是创建一个自己自定义的数据库表类->继承于上文提到的接口基类,进行表的创建
  • 其中,使用Column接口来创建表的列,这个接口担当主要两个变量:第一个是类型【Column, Integer, String, Float】。第二个使用到的是primary_key,即数据库的主键(数据库中数值唯一的一种属性,一般是数据库自动添加的,例如作为整形id,假如主键为TURE,则id这个属性的数值不会重复)
  • Column(type_, *args, **kwargs)

    • type_(必填):指定列的数据类型,例如 Integer、String、DateTime 等。
    • primary_key(可选):是否为主键,默认为 False。
    1. from sqlalchemy import create_engine, Column, Integer, String, Float
    2. from sqlalchemy.orm import declarative_base
    3. db_url = "sqlite:///database.db"
    4. engine = create_engine(db_url)
    5. Base = declarative_base()
    6. class User(Base):
    7.     __tablename__ = "user"
    8.     id = Column(Integer, primary_key=True)
    9.     name = Column(String)
    10.     age = Column(Integer)
    11. Base.metadata.create_all(engine)
    复制代码
  • 最后使用Base.metadata.create_all(engine)接口创建这个数据库的所有表

    • 功能:
      自动创建表:create_all() 会基于模子中定义的表结构自动创建数据库表。假如表已经存在,则不会重新创建。
      数据库初始化:通常在应用步伐第一次启动时,调用 create_all() 来创建数据库结构。
      支持多个表:create_all() 会创建所有在 Base 中定义的模子所对应的表。
    1-4 all code
    1. from sqlalchemy import create_engine, Column, Integer, String, Float
    2. from sqlalchemy.orm import declarative_base
    3. db_url = "sqlite:///database.db"
    4. engine = create_engine(db_url)
    5. Base = declarative_base()
    6. class User(Base):
    7.     __tablename__ = "user"
    8.     id = Column(Integer, primary_key=True)
    9.     name = Column(String)
    10.     age = Column(Integer)
    11.     def __repr__(self):#这个函数可以不用,不影响,为了能直接print这个类对象
    12.         return f"id:{self.id}, name:{self.name}, age:{self.age}"
    13. Base.metadata.create_all(engine)
    复制代码
    鸣谢以及参考:
    参考教程


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表