首页 > 数据库 >python SQLAlchemy ORM——从零开始学习 01 安装库

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

时间:2025-01-07 23:14:04浏览次数:6  
标签:engine Base 01 python 创建 create db Column ORM

01基础库

1-1安装

依赖库:sqlalchemy

pip install sqlalchemy
#直接安装即可

1-2导入使用

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

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

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

    image-20250104004137424

  2. 创建引擎

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

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

    create_engine(url: str | URL) -> Engine

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

    image-20250105212817594

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

    Base = declarative_base()
    

1-3 创建自己的表

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

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

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

    • type_(必填):指定列的数据类型,例如 IntegerStringDateTime 等。
    • 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 中定义的模型所对应的表。

    1-4 all code

    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)
    

    鸣谢以及参考:

    参考教程

标签:engine,Base,01,python,创建,create,db,Column,ORM
From: https://www.cnblogs.com/io-T-T/p/18658613

相关文章

  • WinForm之MDI窗体开发详解
    在WinForm开发中,如果有多个页面进行展示,通常采用菜单栏+容器布局方式(点击菜单栏,打开新的页面,并在容器中显示)。今天以一个简单的小例子,简述如何通过菜单栏和MDI容器实现页面的布局,仅供学习分享使用,如有不足之处,还请指正。涉及知识点在本实例开发中,主要涉及的知识点如下所示:Menu......
  • MyWebServer提示501 Server error .php 映射支持模块加载失败!请检查相关模块文件是否
    前言全局说明MyWebServer提示.php映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!一、说明1.1环境:二、问题提示:501Servererror.php映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!三、解决方法3.1缺少fastcgi_mod.dll文件......
  • django form使用
    示例代码:formfromdjangoimportformsfromdjango.confimportsettingsfromdjango.core.exceptionsimportValidationErrorfromdjango.core.validatorsimportRegexValidatorfromdjango_redisimportget_redis_connectionfromutils.encryptimportmd5fromuti......
  • Python能否实现股票的自动买卖?需要具备哪些技术和条件
    Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>Python在股票交易中的基础Python是一种高级编程语言,在股票交易中有诸多优势。它具有简洁的语法,易于学习和编写代码。使用几行简单的Pytho......
  • Python从0到100(八十二):神经网络-残差网络ResNet的深入介绍和实战
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • 01《人月神话》
    《人月神话》第一章“焦油坑”是一篇关于软件项目管理的经典之作,它以焦油坑中挣扎的史前动物作为隐喻,探讨了软件项目中的复杂性和困难。 在这一章节中,作者弗雷德里克·P·布鲁克斯(FrederickP.Brooks)提出了软件开发中的一些核心观点和挑战。首先,他指出软件项目与建筑项目不同,......
  • 基于Python的高校学生课堂考勤签到系统设计与实现计算机毕设
    博主介绍:✌专注于VUE,小程序,安卓,Java,python,物联网专业,有17年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。研究的背景:基于Python的高校学生课堂考勤签到系统设计与实现的研究背景是在现代社会,随着......
  • 基于Python的高校宿舍维修管理系统设计与实现毕业设计源码
    博主介绍:✌专注于VUE,小程序,安卓,Java,python,物联网专业,有17年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。研究的背景:随着信息技术的快速发展,高校作为我国教育体系的重要组成部分,对于宿舍管理的需求......
  • 面向对象分析与设计Python版 用例与用例图
    文章目录一、用例二、用例图一、用例参与者Actor代表位于系统之外并和系统进行交互的一类事物(人、物、其他软件子系统等)通过它,可以对软件系统与外界发生的交互进行分析和描述,了解客户希望软件系统提供哪些功能参与者的图形表示:根据问题识别参与者谁使用系统?谁......
  • python中的列表
    在刷算法题时,Python的列表(list)是非常常用的数据结构。列表的操作灵活且功能丰富,非常适合用来处理数组、队列、堆栈等问题。以下总结了常用的列表语法和在算法题中会用到的场景:1.列表的创建直接创建lst=[1,2,3,4]列表推导式squares=[x**2forxinrange(5)]......