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/5730.html

(0)
LomuLomu
上一篇 2025 年 1 月 11 日 上午5:22
下一篇 2025 年 1 月 11 日 上午6:23

相关推荐

  • 2025年蓝桥杯Java B组赛题深度剖析与解题策略

    作为一名连续两年参与蓝桥杯软件类Java B组竞赛的选手,我深刻体会到这项赛事对参赛者算法功底和临场应变能力的全面考验。今年的题目延续了蓝桥杯”夯实基础、鼓励创新”的命题风格,每道试题都像精心设计的思维迷宫,等待着选手用代码这把钥匙来开启。本文将系统梳理本届Java B组的典型赛题,通过全新的视角解析解题思路,分享编程实践中遇到的典型问题及其解决方案。这些内…

    未分类 2025 年 5 月 15 日
    12200
  • JetBrains 官方正版账号,全家桶全版本全平台都可激活

    官方授权,激活你自己的JetBrains账号,1年只要66元! 平均一个月不到6块钱!(共享单车一个月都要9.9元了!) 有一个账号有什么优势? 激活您自己的专属账号(官网可查) 不限制任何版本,所有版本登录账号即可使用 不限制任何产品,无论是IDEA、DataGrip、PyCharm、WebStorm等17个工具都直接使用 不需要任何配置,登录你的账号就可…

    2024 年 6 月 22 日
    1.9K00
  • 2025新春源码免费送

    我们常常在日常生活中感到时间过得异常缓慢,仿佛未来遥不可及。然而,当我们回过头去审视过去,才发现时间早已悄然溜走,许多曾经等待的日子已经过去。时间总是在不经意间流逝,让人意识到它的宝贵和不可逆转。 尽管如此,我们依然应对未来保持从容的态度。生活充满了无数的可能性,未来依然充满了希望与机会。无论眼前的路看似如何曲折,抑或我们面临的挑战有多大,始终相信自己能够把…

    2025 年 1 月 10 日
    23800
  • 已解决:java.lang.IllegalStateException 异常的正确解决方法,亲测有效!!!

    在Java开发中,java.lang.IllegalStateException 是一个常见的运行时异常,通常表示程序的状态与预期不符。在一些情况下,方法调用的前置条件没有得到满足,或者对象的状态不适合执行某个操作时,会抛出此异常。本文将详细分析IllegalStateException 的成因,并提供多种有效的解决方案,帮助开发者避免或解决这些问题。 1.…

    未分类 2025 年 1 月 12 日
    46800
  • WxPython跨平台开发框架之图标选择界面

    在使用 wxPython 开发跨平台桌面应用程序时,创建一个图标选择界面 通常用于让用户从图标资源库中选择图标,我们可以把图标分为自定义的图标资源和系统的图标资源两大类,最终我们把它们整合一起使用,在框架的界面中使用,包括工具栏、右键菜单、按钮、图片等所需的地方显示,实现图文并茂的友好界面展示。本篇随笔介绍这两种图标资源的管理和使用过程。 1、图标分类介绍 …

    2025 年 1 月 1 日
    30400

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信