中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

如何購買建設(shè)網(wǎng)站系統(tǒng)it培訓(xùn)班真的有用嗎

如何購買建設(shè)網(wǎng)站系統(tǒng),it培訓(xùn)班真的有用嗎,做銷售在哪個網(wǎng)站找客戶,企業(yè)網(wǎng)站可以做一級等保嗎SQLAlchemy-2.0中模型定義和alembic的數(shù)據(jù)庫遷移工具 一、SQLAIchemy的介紹二、數(shù)據(jù)庫引擎1、支持的數(shù)據(jù)庫1.1、sqlite數(shù)據(jù)庫1.2、MySQL數(shù)據(jù)庫1.3、數(shù)據(jù)庫引擎的參數(shù) 三、定義模型類1、定義模型2、engine負責(zé)數(shù)據(jù)庫遷移 四、alembic數(shù)據(jù)庫遷移?具1、安裝alembic2、初始化alemb…

在這里插入圖片描述


SQLAlchemy-2.0中模型定義和alembic的數(shù)據(jù)庫遷移工具

  • 一、SQLAIchemy的介紹
  • 二、數(shù)據(jù)庫引擎
    • 1、支持的數(shù)據(jù)庫
      • 1.1、sqlite數(shù)據(jù)庫
      • 1.2、MySQL數(shù)據(jù)庫
      • 1.3、數(shù)據(jù)庫引擎的參數(shù)
  • 三、定義模型類
    • 1、定義模型
    • 2、engine負責(zé)數(shù)據(jù)庫遷移
  • 四、alembic數(shù)據(jù)庫遷移?具
    • 1、安裝alembic
    • 2、初始化alembic環(huán)境
    • 3、修改配置和環(huán)境
    • 4、執(zhí)?命令

一、SQLAIchemy的介紹

SQLAlchemy 是 Python 生態(tài)系統(tǒng)中最流行的 ORM。SQLAlchemy 設(shè)計非常優(yōu)雅,分為了兩部分——底層的 Core 和上層的傳統(tǒng)ORM。在 Python 乃至其他語言的大多數(shù) ORM 中,都沒有實現(xiàn)很好的分層設(shè)計,比如 django 的 ORM,數(shù)據(jù)庫鏈接和 ORM 本身完全混在一起。

在這里插入圖片描述

SQLAlchemy 是 Python 中一個通過 ORM 操作數(shù)據(jù)庫的框架。
SOLAIchemy對象關(guān)系映射器提供了一種方法,用于將用戶定義的Python類與數(shù)據(jù)庫表相關(guān)聯(lián),并將這些類(對象)的實例與其對應(yīng)表中的行相關(guān)聯(lián)。它包括一個透明地同步對象及其相關(guān)行之間狀態(tài)的所有變化的系統(tǒng),稱為工作單元,以及根據(jù)用戶定義的類及其定義的彼此之間的關(guān)系表達數(shù)據(jù)庫查詢的系統(tǒng)。

可以讓我們使用類和對象的方式操作數(shù)據(jù)庫,從而從繁瑣的 sql語句中解脫出來。
ORM 就是: Obiect Relational Mapper 的簡寫,就是關(guān)系對象映射器的意思。

在這里插入圖片描述

二、數(shù)據(jù)庫引擎

任何SQLAlchemy應(yīng)用程序的開始都是一個名為 Engine.此對象充當(dāng)連接到特定數(shù)據(jù)庫的中心源,提供工廠和稱為 connection pool對于這些數(shù)據(jù)庫連接。引擎通常是一個只為特定數(shù)據(jù)庫服務(wù)器創(chuàng)建一次的全局對象,并使用一個URL字符串進行配置,該字符串將描述如何連接到數(shù)據(jù)庫主機或后端。

在這里插入圖片描述
sqlalchemy使用create_engine()函數(shù)從URL生成一個數(shù)據(jù)庫引擎對象。例如:

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

1、支持的數(shù)據(jù)庫

URL通??梢园??名、密碼、主機名、數(shù)據(jù)庫名以及?于其他配置的可選關(guān)鍵字參數(shù)。主題格式
為:

1.1、sqlite數(shù)據(jù)庫

sqlite使?python內(nèi)置模塊連接到基于?件的數(shù)據(jù)庫sqlite3 默認情況下。

在這里插入圖片描述

1.2、MySQL數(shù)據(jù)庫

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、數(shù)據(jù)庫引擎的參數(shù)

  1. echo=False–如果為真,引擎將記錄所有語句以及repr()其參數(shù)列表的默認?志處理程序
  2. future --使?2.0樣式Engine和Connection API。
  3. logging_name–將在“sqlalChemy.engine”記錄器中?成的?志記錄的“name”字段中使?的
    字符串標識符。
  4. pool_size=5 #連接池的??默認為5個,設(shè)置為0時表?連接?限制
  5. pool_recycle=3600,#設(shè)置時間以限制數(shù)據(jù)庫?動斷開
  6. pool_timeout:連接超時時間,默認為30秒,超過時間的連接都會連接失敗。

三、定義模型類

這種模型類結(jié)構(gòu)稱為聲明性映射,它同時定義了 Python 對象模型,以及描述的數(shù)據(jù)庫元數(shù)據(jù) 在特定數(shù)據(jù)庫中存在或?qū)⒁嬖诘?br /> 真實 數(shù)據(jù)庫 表。
映射從一個基類開始,并且是 通心對類的繼承來創(chuàng)建一個簡單的子類。這里的父類是:Base 模型類。

1、定義模型

# 定義一個模型類的基類
class Base(DeclarativeBase):# 所有的模型類都有的屬性和字段映射create_time: Mapped[datetime] = mapped_column(DateTime, insert_default=func.now(), comment="創(chuàng)建時間")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):"""通過枚舉,可以給一些屬性(字段)設(shè)置預(yù)設(shè)值"""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:總位數(shù),2:小數(shù)點后位數(shù)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__':# 數(shù)據(jù)庫遷移# 創(chuàng)建表Base.metadata.create_all(engine)

在這里插入圖片描述
在這里插入圖片描述

2、engine負責(zé)數(shù)據(jù)庫遷移

# 所有的表都重新創(chuàng)建 
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
# 單獨把某個表創(chuàng)建?下 
Employee.__table__.drop(engine)
Employee.__table__.create(engine)

四、alembic數(shù)據(jù)庫遷移?具

Alembic使?SQLAlchemy作為底層引擎,為關(guān)系數(shù)據(jù)庫提供變更腳本的創(chuàng)建、管理和調(diào)?。

1、安裝alembic

pip install alembic

2、初始化alembic環(huán)境

命令:alembic init alembic
在這里插入圖片描述

3、修改配置和環(huán)境

在這里插入圖片描述
在這里插入圖片描述

4、執(zhí)?命令

# ?動?成遷移腳本 
alembic revision --autogenerate -m "init commit" # 注意修改了orm之后,修改-m后遷移腳
# 數(shù)據(jù)庫遷移命令 
alembic upgrade head

在這里插入圖片描述
查看數(shù)據(jù)庫的版本號與versions中生成的版本號一致
在這里插入圖片描述

? alembic upgrade head :將數(shù)據(jù)庫升級到最新版本。
? alembic downgrade base :將數(shù)據(jù)庫降級到最初版本。
? alembic upgrade :將數(shù)據(jù)庫升級到指定版本。
? alembic downgrade :將數(shù)據(jù)庫降級到指定版本。

演示版本降級:
在這里插入圖片描述

http://m.risenshineclean.com/news/65645.html

相關(guān)文章:

  • 怎樣做約票的網(wǎng)站意思電商營銷推廣方案
  • 建網(wǎng)站報價 優(yōu)幫云企業(yè)培訓(xùn)考試
  • 網(wǎng)站建設(shè)有哪些方法google seo 優(yōu)化招聘
  • 做網(wǎng)站域名服務(wù)器網(wǎng)站建設(shè)公司簡介
  • bt磁力搜索引擎win10優(yōu)化大師免費版
  • 網(wǎng)站 微信小程序怎么做百度指數(shù)搜索
  • 北龍中網(wǎng) 可信網(wǎng)站驗證 費用百度手機怎么刷排名多少錢
  • 招聘網(wǎng)站分析如何做網(wǎng)店推廣方案
  • 網(wǎng)站續(xù)費怎么做分錄百度seo關(guān)鍵詞排名優(yōu)化
  • 如何做視頻網(wǎng)站技術(shù)優(yōu)化大師軟件下載
  • 網(wǎng)站建設(shè)綿陽網(wǎng)絡(luò)營銷品牌案例
  • 專門做物理的網(wǎng)站網(wǎng)絡(luò)營銷的概念和特點是什么
  • 網(wǎng)站后臺登陸不進去是怎么回事網(wǎng)絡(luò)營銷手段有哪四種
  • 網(wǎng)站上的logo怎么做有哪些網(wǎng)絡(luò)推廣平臺
  • 網(wǎng)站開發(fā)的響應(yīng)式和兼容性問題seo優(yōu)化是利用規(guī)則提高排名
  • 如何做電子書網(wǎng)站全網(wǎng)營銷系統(tǒng)是不是傳銷
  • 南京網(wǎng)站制作有限公司網(wǎng)站交易網(wǎng)
  • 做ppt找圖片在哪個網(wǎng)站重慶seo代理
  • 微信平臺的微網(wǎng)站怎么做網(wǎng)站關(guān)鍵詞優(yōu)化培訓(xùn)
  • 網(wǎng)站上的鏈接怎么做的有哪些搜索引擎網(wǎng)站
  • 網(wǎng)站建設(shè)演示ppt搜索引擎營銷ppt
  • 網(wǎng)站擁有權(quán)亞馬遜seo推廣
  • 公司公司網(wǎng)站建設(shè)公司平臺推廣銷售話術(shù)
  • 網(wǎng)站統(tǒng)計源碼google關(guān)鍵詞seo
  • 長沙做網(wǎng)站的公司有哪些百度代運營
  • 贛州seo快速霸屏短視頻優(yōu)化
  • 購物幫–做特惠的導(dǎo)購網(wǎng)站磁力bt種子搜索神器
  • 網(wǎng)站不能粘貼怎么做全國各城市疫情高峰感染進度
  • 17網(wǎng)站一起做網(wǎng)店普寧池尾雅晨做外貿(mào)有哪些網(wǎng)站平臺
  • 怎么做網(wǎng)站和服務(wù)器嗎百度網(wǎng)絡(luò)營銷中心