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

01基础库

1-1安装

依赖库:sqlalchemy

```python
pip install sqlalchemy
#直接安装即可
```

1-2导入使用

这里讲解思路【个人的理解】,具体写其实就是这个框架:

  1. 导入必要的接口【有创建engine以及declarative_base

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

image-20250104004137424

  1. 创建引擎
    ```python
    

    db_url = "sqlite:///database.db" #本地的sqlite数据库的地址,没有则自动创建
    engine = create_engine(db_url) #调用数据库的url地址创建引擎
    ```

其中主要根据 sqlalchemy中的create_engine接口进行引擎的创建

create_engine(url: str | URL) -> Engine

其中URL就是上文提到的PostgreSQL的对象。这里是用sqlite,其他兼容数据库也可以使用,参照下图:

  1. 定义一个 sqlalchemyORM接口的基类,用于后续创建自定义的表、以及增删查改
    ```python
    

    Base = declarative_base()
    ```

1-3 创建自己的表

  • 前面的逻辑和导入使用是重合的,主要就是创建一个自己自定义的数据库表类 ->继承于上文提到的接口基类,进行表的创建

  • 其中,使用Column接口来创建表的列,这个接口接受主要两个变量:第一个是类型【Column, Integer, String, Float】。第二个使用到的是primary_key,即数据库的主键(数据库中数值唯一的一种属性,一般是数据库自动添加的,例如作为整形id,如果主键为TURE,则id这个属性的数值不会重复)

  • Column(type_, *args, **kwargs)

    • type_ (必填):指定列的数据类型,例如 IntegerStringDateTime 等。
    • primary_key (可选):是否为主键,默认为 False

      ```python
      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 中定义的模型所对应的表。

1-4 all code

    ```python
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)

    def __repr__(self):#这个函数可以不用,不影响,为了能直接print这个类对象
        return f"id:{self.id}, name:{self.name}, age:{self.age}"


Base.metadata.create_all(engine)
```

鸣谢以及参考:

参考教程

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6038.html

(0)
LomuLomu
上一篇 2025 年 1 月 12 日 下午3:19
下一篇 2025 年 1 月 12 日 下午4:19

相关推荐

  • Eclipse开发环境配置指南:从安装到汉化全流程详解

    目录导航Eclipse软件获取1、解压缩操作指南2、启动Eclipse步骤3、设置工作空间路径Java项目创建指南1、新建项目入口2、选择Java项目类型3、命名并完成创建4、切换开发视图5、项目资源管理器Checkstyle代码规范工具配置1、插件启用方法2、参数设置流程3、创建检查规则4、设为默认配置5、测试验证步骤6、问题标记功能7、启用/禁用切换8、…

    2025 年 5 月 12 日
    51100
  • 高性能MySQL(第4版)PDF、EPUB免费下载

    适读人群 :不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获 领域经典十年后全版更新||全面拥抱8.0||重磅剖析现代云数据库与大规模运维实践||中国首批DBA精琢翻译5大头部国产数据库创始人联合力荐 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息…

    2025 年 1 月 6 日
    46700
  • 【Java疑难解析】深入解决java.lang.UnsatisfiedLinkError异常

    🎉🎉🎉诚挚欢迎各位技术爱好者莅临!在这里,我们不仅能交流技术心得,更能碰撞思维火花,共同构建开放互助的学习社区。期待与您携手在这个数字空间里共同进步,突破技术瓶颈。🎉🎉🎉🌟🌟 诚邀订阅本专栏 🌟🌟内容导航问题概述异常现象解析1.1 典型错误案例1.2 异常根源探究1.3 处理方案规划解决方案详解2.1 方案A:验证本地库文件完整性2.2 方案B:分析库文件依…

    2025 年 5 月 18 日
    28900
  • 通过延时从库+binlog复制,恢复误操作数据

    通过延迟复制与binlog恢复意外删除的数据 一、环境概述 以下是我们操作的数据库环境的详细信息: 数据库版本 实例角色 IP地址 端口 GreatSQL 8.0.32-26 主库 192.168.134.199 5725 GreatSQL 8.0.32-26 从库 192.168.134.199 5726 二、主库设置 在主库上,我们首先需要创建一个复制用…

    2024 年 12 月 24 日
    47400
  • 全网最详细的Spring入门教程

    为什么用Spring 什么是Spring Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。 Spring的一个最大的目的就是使JAVA EE开发更加容易 。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单…

    2024 年 12 月 24 日
    55600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信