如何从零开始学习使用Python SQLAlchemy ORM库?

摘要:01基础库 1-1安装 依赖库:sqlalchemy pip install sqlalchemy #直接安装即可 1-2导入使用 这里讲解思路【个人的理解】,具体写其实就是这个框架: 导入必要的接口【有创建engine以及declarat
01基础库 1-1安装 依赖库:sqlalchemy pip install sqlalchemy #直接安装即可 1-2导入使用 这里讲解思路【个人的理解】,具体写其实就是这个框架: 导入必要的接口【有创建engine以及declarative_base】 通过create_engine接口创建engine,根据翻译可以翻译成引擎,和发动机一样,有了这个才能驱动数据库启动,但创建engine的接口接受的是一个针对 PostgreSQL的对象,对象的示例如:postgresql+psycopg2://scott:tiger@localhost:5432/mydatabase 以下是官方对于这个engine的解释: 创建引擎 db_url = "sqlite:///database.db" #本地的sqlite数据库的地址,没有则自动创建 engine = create_engine(db_url) #调用数据库的url地址创建引擎 其中主要根据 sqlalchemy中的create_engine接口进行引擎的创建 create_engine(url: str | URL) -> Engine 其中URL就是上文提到的PostgreSQL的对象。这里是用sqlite,其他兼容数据库也可以使用,参照下图: 更新一下没有写清楚的问题:url中的地址规则如下: 使用绝对路径时使用 “////” 使用相对路径时用 "///" 定义一个 sqlalchemyORM接口的基类,用于后续创建自定义的表、以及增删查改 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。 from sqlalchemy import create_engine, Column, Integer, String, Float from sqlalchemy.orm import declarative_base db_url = "sqlite:///database.db" engine = create_engine(db_url) Base = declarative_base() class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) Base.metadata.create_all(engine) 最后使用Base.metadata.create_all(engine)接口创建这个数据库的所有表 功能: 自动创建表:create_all() 会基于模型中定义的表结构自动创建数据库表。如果表已经存在,则不会重新创建。 数据库初始化:通常在应用程序第一次启动时,调用 create_all() 来创建数据库结构。 支持多个表:create_all() 会创建所有在 Base 中定义的模型所对应的表。
阅读全文