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

news/2025/1/7 23:04:46/文章来源:https://www.cnblogs.com/io-T-T/p/18658613

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_basedb_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_basedb_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)
    

    鸣谢以及参考:

    参考教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865584.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinForm之MDI窗体开发详解

在WinForm开发中,如果有多个页面进行展示,通常采用菜单栏+容器布局方式(点击菜单栏,打开新的页面,并在容器中显示)。今天以一个简单的小例子,简述如何通过菜单栏和MDI容器实现页面的布局,仅供学习分享使用,如有不足之处,还请指正。在WinForm开发中,如果有多个页面进…

WinForm开发之MDI窗体开发详解

在WinForm开发中,如果有多个页面进行展示,通常采用菜单栏+容器布局方式(点击菜单栏,打开新的页面,并在容器中显示)。今天以一个简单的小例子,简述如何通过菜单栏和MDI容器实现页面的布局,仅供学习分享使用,如有不足之处,还请指正。在WinForm开发中,如果有多个页面进…

【 lvgl专题】LVGL核心部件——弧(arc)控件的介绍

概述 本文介绍LVGL核心部件——弧(arc),它由背景和前景弧组成。前景(指示器)可以进行触摸调整。LVGL核心部件——弧(arc)控件 一、部件和样式 LV_PART_MAIN 使用典型的背景样式属性绘制背景,使用圆弧样式属性绘制圆弧。 圆弧的大小和位置将遵循 padding 样式属性。LV_P…

10.18软件设计——工厂方法模式之加密算法

软件设计——工厂方法模式之加密算法 1、类图2、源代码2.1 结构目录2.2 所需jar包这里分享几个下载 jar 包的网址:http://www.mvnrepository.com/http://mvnrepository.com/http://findjar.comhttp://sourceforge.net/注:将 jar 包放入 lib 文件夹后要进行构建路径2.3 Met…

2024.12.14

SQL 语法 SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准语言,包括数据查询、数据插入、数据更新、数据删除、数据库结构创建和修改等功能。。数据库表 一个数据库通常包含一个或多个表,每个表有一个名字标识(例如:"Websites"),表包含带…

在 GoRoute 中使用 NavigationBar

前言 在App 中通常会把主要的几个页面放在下方icon,让使用者能够方便操作,这个元件在flutter 中称为BottomNavigationBar。 而GoRouter则是Flutter 官方所提供的套件,可以用来整合整个专案的路由。 当这两个功能整合在一起的时候,一个不小心呈现出来的效果就会差很多。 准备…

MyWebServer提示501 Server error .php 映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!

前言全局说明MyWebServer提示.php 映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!一、说明 1.1 环境:二、问题 提示:501 Server error .php 映射支持模块加载失败!请检查相关模块文件是否存在,版本是否匹配!三、解决方法 3.1 缺少 fastcgi_mod.dll 文件3.2…

Easy.Admin:基于 .NET 8 和 Vue3 的后台管理系统,支持多种数据库和服务端渲染(SSR)

🌟 介绍 Easy.Admin 是一个高效且灵活的后台管理系统,采用了现代化的技术栈,旨在帮助开发者快速搭建高质量的后台管理平台。这个系统不仅支持 .NET 8 后端开发,还结合了 Vue3 和 TypeScript 前端技术,提供了一个功能强大且易于扩展的管理框架。同时,它还支持多种数据库,…

2024.10,14

HTML 颜色名目前所有浏览器都支持以下颜色名。 141个颜色名称是在HTML和CSS颜色规范定义的(17标准颜色,再加124)。下表列出了所有颜色的值,包括十六进制值。提示: 17标准颜色:黑色,蓝色,水,紫红色,灰色,绿色,石灰,栗色,海军,橄榄,橙,紫,红,白,银,蓝绿色,黄…

RASP从0到1

一、环境配置 在讲晦涩难懂的理论之前,先配个代码环境: https://xz.aliyun.com/t/4902?time__1311=n4%2Bxni0QKmTbG8DBDBqDqpDUO2QooDkbIbReDhttps://xz.aliyun.com/t/4903?time__1311=n4%2Bxni0QKmTbG8DyDBqDqpYHQTRZnpoD按照文1进行环境搭建,文1中文件名应为MANIFEST.MF…

springcloud版本选择

首先到官网:https://spring.io/projects/spring-cloud#overview 本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18658446

【网络安全法】某公众号作者擅自发布安全漏洞被处罚

今天,各大安全圈交流群疯狂转发某公众号作者擅自发布安全漏洞,被攻击者利用攻击某企业的消息。随着网安行业下行,大量网安从业者开始步入自媒体行业,有部分从业者为了博取眼球,增加流量,通过发布一些安全漏洞及poc来寻求更多人阅读和关注,显然作为网络安全从业者,没有仔…