当前位置: 首页 > news >正文

海鲜网站模板wordpress 分类页面 层级

海鲜网站模板,wordpress 分类页面 层级,吉林省建设部网站,怎么自己做直播网站SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具 一、SQLAIchemy的介绍二、数据库引擎1、支持的数据库1.1、sqlite数据库1.2、MySQL数据库1.3、数据库引擎的参数 三、定义模型类1、定义模型2、engine负责数据库迁移 四、alembic数据库迁移⼯具1、安装alembic2、初始化alemb…

在这里插入图片描述


SQLAlchemy-2.0中模型定义和alembic的数据库迁移工具

  • 一、SQLAIchemy的介绍
  • 二、数据库引擎
    • 1、支持的数据库
      • 1.1、sqlite数据库
      • 1.2、MySQL数据库
      • 1.3、数据库引擎的参数
  • 三、定义模型类
    • 1、定义模型
    • 2、engine负责数据库迁移
  • 四、alembic数据库迁移⼯具
    • 1、安装alembic
    • 2、初始化alembic环境
    • 3、修改配置和环境
    • 4、执⾏命令

一、SQLAIchemy的介绍

SQLAlchemy 是 Python 生态系统中最流行的 ORM。SQLAlchemy 设计非常优雅,分为了两部分——底层的 Core 和上层的传统ORM。在 Python 乃至其他语言的大多数 ORM 中,都没有实现很好的分层设计,比如 django 的 ORM,数据库链接和 ORM 本身完全混在一起。

在这里插入图片描述

SQLAlchemy 是 Python 中一个通过 ORM 操作数据库的框架。
SOLAIchemy对象关系映射器提供了一种方法,用于将用户定义的Python类与数据库表相关联,并将这些类(对象)的实例与其对应表中的行相关联。它包括一个透明地同步对象及其相关行之间状态的所有变化的系统,称为工作单元,以及根据用户定义的类及其定义的彼此之间的关系表达数据库查询的系统。

可以让我们使用类和对象的方式操作数据库,从而从繁琐的 sql语句中解脱出来。
ORM 就是: Obiect Relational Mapper 的简写,就是关系对象映射器的意思。

在这里插入图片描述

二、数据库引擎

任何SQLAlchemy应用程序的开始都是一个名为 Engine.此对象充当连接到特定数据库的中心源,提供工厂和称为 connection pool对于这些数据库连接。引擎通常是一个只为特定数据库服务器创建一次的全局对象,并使用一个URL字符串进行配置,该字符串将描述如何连接到数据库主机或后端。

在这里插入图片描述
sqlalchemy使用create_engine()函数从URL生成一个数据库引擎对象。例如:

engine=create_engine(r"sqlite:///C:\path\to\foo.db")

1、支持的数据库

URL通常可以包括⽤⼾名、密码、主机名、数据库名以及⽤于其他配置的可选关键字参数。主题格式
为:

1.1、sqlite数据库

sqlite使⽤python内置模块连接到基于⽂件的数据库sqlite3 默认情况下。

在这里插入图片描述

1.2、MySQL数据库

mysql⽅⾔使⽤mysql python作为默认dbapi。mysql dbapis有很多,包括pymysql和mysqlclient:
在这里插入图片描述

from sqlalchemy import create_engineengine = create_engine('mysql+pymysql://root:root@localhost:3306/test_db2?charset=utf8')

1.3、数据库引擎的参数

  1. echo=False–如果为真,引擎将记录所有语句以及repr()其参数列表的默认⽇志处理程序
  2. future --使⽤2.0样式Engine和Connection API。
  3. logging_name–将在“sqlalChemy.engine”记录器中⽣成的⽇志记录的“name”字段中使⽤的
    字符串标识符。
  4. pool_size=5 #连接池的⼤⼩默认为5个,设置为0时表⽰连接⽆限制
  5. pool_recycle=3600,#设置时间以限制数据库⾃动断开
  6. pool_timeout:连接超时时间,默认为30秒,超过时间的连接都会连接失败。

三、定义模型类

这种模型类结构称为声明性映射,它同时定义了 Python 对象模型,以及描述的数据库元数据 在特定数据库中存在或将要存在的
真实 数据库 表。
映射从一个基类开始,并且是 通心对类的继承来创建一个简单的子类。这里的父类是:Base 模型类。

1、定义模型

# 定义一个模型类的基类
class Base(DeclarativeBase):# 所有的模型类都有的属性和字段映射create_time: Mapped[datetime] = mapped_column(DateTime, insert_default=func.now(), comment="创建时间")update_time: Mapped[datetime] = mapped_column(DateTime, insert_default=func.now(), onupdate=func.now(),comment="更新时间")
import enum
from decimal import Decimalfrom sqlalchemy import String, DECIMAL, Boolean
from sqlalchemy.orm import Mapped, mapped_columnfrom ch04.db_main import Base, engineclass SexValue(enum.Enum):"""通过枚举,可以给一些属性(字段)设置预设值"""MALE = "男"FEMALE = "女"class Employee(Base):"""员工的模型类"""__tablename__ = "t_emp"id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)name: Mapped[str] = mapped_column(String(40), name="emp_name", unique=True, nullable=False)  # 不允许为空# DECIMAL:10:总位数,2:小数点后位数sal: Mapped[Decimal] = mapped_column(DECIMAL(10, 2), nullable=True, comment="员工的基本薪资")bonus: Mapped[int] = mapped_column(default=0, comment="员工的津贴")is_leave: Mapped[bool] = mapped_column(Boolean, default=False, comment="员工是否离职,True表示离职,False表示在职")gender: Mapped[SexValue]if __name__ == '__main__':# 数据库迁移# 创建表Base.metadata.create_all(engine)

在这里插入图片描述
在这里插入图片描述

2、engine负责数据库迁移

# 所有的表都重新创建 
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
# 单独把某个表创建⼀下 
Employee.__table__.drop(engine)
Employee.__table__.create(engine)

四、alembic数据库迁移⼯具

Alembic使⽤SQLAlchemy作为底层引擎,为关系数据库提供变更脚本的创建、管理和调⽤。

1、安装alembic

pip install alembic

2、初始化alembic环境

命令:alembic init alembic
在这里插入图片描述

3、修改配置和环境

在这里插入图片描述
在这里插入图片描述

4、执⾏命令

# ⾃动⽣成迁移脚本 
alembic revision --autogenerate -m "init commit" # 注意修改了orm之后,修改-m后迁移脚
# 数据库迁移命令 
alembic upgrade head

在这里插入图片描述
查看数据库的版本号与versions中生成的版本号一致
在这里插入图片描述

• alembic upgrade head :将数据库升级到最新版本。
• alembic downgrade base :将数据库降级到最初版本。
• alembic upgrade :将数据库升级到指定版本。
• alembic downgrade :将数据库降级到指定版本。

演示版本降级:
在这里插入图片描述

http://www.15wanjia.com/news/158155.html

相关文章:

  • 可以举报一个做网络网站发大财吗asp.net建网站
  • 51ppt模板免费下载网站成都解封公告
  • 西安网站建设案例网上移动厅官方网站
  • 机床网站建设世界500强企业查询
  • access做网站数据方法济南企业网站推广方法
  • python基础教程pdf网站栏目页 优化
  • 西安私人网站网上注册公司名字审核
  • 怎么做企业功能网站优秀产品设计
  • 江川区住房和城乡建设局网站学做莱网站
  • 关于公司门户网站建设的议案百度怎样建设网站
  • 做国外网站用什么颜色江西星子网
  • 地方网站怎么做用mockplus做网站原型
  • 做电子画册的网站易安卓开发app稳定吗
  • wordpress更改站点名称有哪些做汽配的网站
  • 成都 网站建设 app 开发一般网站开发语言
  • 济南建站模板桂林市网站建设公司
  • 苏州网站建设设计公司免费的服务器有哪些
  • 中山建设网站首页晓风彩票网站建设软件
  • wordpress noinput北京搜索引擎优化经理
  • 网站根目录相对路径j动态加载网站开发
  • 虚拟主机网站在淘宝做网站可以改域名吗
  • 做飞象金服的网站模板网站五金
  • 现在公司做各网站要多少钱建设公司网站需要注意哪些
  • 宁波企业网站制作推荐永春县住房和城乡建设网站
  • 网站怎么做seo关键词中国太空网站
  • 百度网站是百度公司做的吗策划公司网站
  • 找一家秦皇岛市做网站的公司广点通投放平台登录
  • 生鲜做的好的网站python如何制作网页
  • 站长工具国产2023做海报的软件
  • 大连开发网站东莞网上推广怎么做