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

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

網(wǎng)約車后臺(tái)平臺(tái)網(wǎng)站建設(shè)昆明關(guān)鍵詞優(yōu)化

網(wǎng)約車后臺(tái)平臺(tái)網(wǎng)站建設(shè),昆明關(guān)鍵詞優(yōu)化,北京上海網(wǎng)站建設(shè)公司,天津seo目錄 ORM模型映射到數(shù)據(jù)庫(kù)中 SQLAlchemy對(duì)數(shù)據(jù)的增刪改查操作?編輯 構(gòu)建session對(duì)象 添加對(duì)象 查找對(duì)象 修改對(duì)象 刪除對(duì)象 ORM模型映射到數(shù)據(jù)庫(kù)中 用declarative_base根據(jù)engine創(chuàng)建一個(gè)ORM基類 from sqlalchemy.ext.declarative import declarative_base engine cr…

目錄

ORM模型映射到數(shù)據(jù)庫(kù)中

?SQLAlchemy對(duì)數(shù)據(jù)的增刪改查操作?編輯

構(gòu)建session對(duì)象

?添加對(duì)象

查找對(duì)象?

修改對(duì)象

刪除對(duì)象


ORM模型映射到數(shù)據(jù)庫(kù)中

declarative_base根據(jù)engine創(chuàng)建一個(gè)ORM基類

from sqlalchemy.ext.declarative import declarative_base
engine = create_engine(DB_URI)
Base = declarative_base(engine)

用這個(gè)Base類作為基類來寫自己的ORM類。要定義__tablename__類屬性,來指定這個(gè)模型映射到數(shù)據(jù)庫(kù)中的表名

class Person(Base):__tablename__ ='t_person'

創(chuàng)建屬性來映射到表中的字段,所有需要映射到表中的屬性都應(yīng)該為Column類型

class Person(Base):__tablename__ ='t_person'# 在這個(gè)ORM模型中創(chuàng)建一些屬性,來跟表中的字段進(jìn)行一一映射。# 這些屬性必須是sqlalchemy給我們提供好的數(shù)據(jù)類型id = Column(Integer,primary_key=True,autoincrement=True)name = Column(String(50))age = Column(Integer)country = Column(String(50))

使用Base.metadata.create_all()來將模型映射到數(shù)據(jù)庫(kù)中

Base.metadata.create_all()

注意

一旦使用Base.metadata.create_all()將模型映射到數(shù)據(jù)庫(kù)中后,即使改變了模型的字段,也不會(huì)重新映射了

?SQLAlchemy對(duì)數(shù)據(jù)的增刪改查操作

構(gòu)建session對(duì)象

所有和數(shù)據(jù)庫(kù)的ORM操作都必須通過一個(gè)叫做session的會(huì)話對(duì)象來實(shí)現(xiàn),通過以下代碼來獲取會(huì)話對(duì)象

from sqlalchemy.orm import sessionmaker
engine = create_engine(DB_URI)
Base = declarative_base(engine)
session = sessionmaker(engine)()
  1. from sqlalchemy.orm import sessionmaker: 這行代碼導(dǎo)入了sessionmaker,它是用于創(chuàng)建會(huì)話(session)的工廠函數(shù)。

  2. engine = create_engine(DB_URI): 這行代碼使用了之前構(gòu)建的數(shù)據(jù)庫(kù)連接字符串(DB_URI)來創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)引擎(engine)。

  3. Base = declarative_base(engine): 這行代碼使用了declarative_base函數(shù)來創(chuàng)建了一個(gè)基類(Base)。然而,請(qǐng)注意,在declarative_base函數(shù)中傳遞了一個(gè)參數(shù)engine,這將指定此基類使用的數(shù)據(jù)庫(kù)引擎。

  4. session = sessionmaker(engine)(): 這行代碼創(chuàng)建了一個(gè)會(huì)話(session)對(duì)象(session)。sessionmaker函數(shù)接受一個(gè)引擎作為參數(shù),用于創(chuàng)建會(huì)話。注意后面的額外的一對(duì)括號(hào)(),它們實(shí)際上調(diào)用了sessionmaker返回的函數(shù),以創(chuàng)建一個(gè)實(shí)際的會(huì)話對(duì)象。

?

?添加對(duì)象

def create_data_one():with Session() as session:p1 = Person(name = '春秋',age = 6 , country='北京')session.add(p1)session.commit()def create_data_many():with Session() as session:p2 = Person(name = '呂布',age = 19 , country='北京')p3 = Person(name = '貂蟬',age = 18 , country='北京')session.add_all([p2,p3])session.commit()

?

  1. create_data_one() 函數(shù):

    • 這個(gè)函數(shù)使用了一個(gè)上下文管理器(with Session() as session),它創(chuàng)建了一個(gè)會(huì)話對(duì)象 session。

    • 在這個(gè)函數(shù)中,創(chuàng)建了一個(gè)名為 p1Person 對(duì)象,該對(duì)象具有名字、年齡和國(guó)家信息。

    • 然后將 p1 添加到了會(huì)話中 (session.add(p1))。

    • 最后調(diào)用 session.commit() 來提交這個(gè)會(huì)話,將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。

  2. create_data_many() 函數(shù):

    • 同樣地,這個(gè)函數(shù)也使用了上下文管理器來創(chuàng)建一個(gè)會(huì)話對(duì)象 session。

    • 在這個(gè)函數(shù)中,創(chuàng)建了兩個(gè)名為 p2p3Person 對(duì)象,分別代表了兩個(gè)不同的人員信息。

    • 使用 session.add_all([p2, p3]) 一次性將這兩個(gè)對(duì)象添加到會(huì)話中。

    • 最后調(diào)用 session.commit() 來提交這個(gè)會(huì)話,將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。

查找對(duì)象?

def query_data_all():with Session() as session:all_person = session.query(Person).all()for p in all_person:print(p.name)def query_data_one():with Session() as session:p1 = session.query(Person).first()print(p1.name)
def query_data_by_params():with Session() as session:# p1 = session.query(Person).filter_by(name='呂布').first()p1 = session.query(Person).filter(Person.name == '呂布').first()print(p1.age)
  1. query_data_all() 函數(shù):

    • 使用上下文管理器創(chuàng)建了一個(gè)會(huì)話對(duì)象 session。

    • 使用 session.query(Person).all() 查詢了所有的 Person 對(duì)象,并將它們以列表的形式返回給變量 all_person

    • 然后通過一個(gè)循環(huán)遍歷了所有的人員,并打印了他們的名字。

  2. query_data_one() 函數(shù):

    • 同樣地,使用上下文管理器創(chuàng)建了一個(gè)會(huì)話對(duì)象 session。

    • 使用 session.query(Person).first() 查詢了第一個(gè) Person 對(duì)象,并將其賦給了變量 p1。

    • 最后打印了 p1 對(duì)象的名字。

  3. query_data_by_params() 函數(shù):

    • 這個(gè)函數(shù)演示了如何通過特定的條件來查詢數(shù)據(jù)。

    • 使用了上下文管理器創(chuàng)建了一個(gè)會(huì)話對(duì)象 session。

    • 通過 session.query(Person).filter(Person.name == '呂布').first() 查詢了名字為 '呂布' 的第一個(gè) Person 對(duì)象,并將其賦給了變量 p1。

    • 最后打印了 p1 對(duì)象的年齡。

?

修改對(duì)象

def update_data():with Session() as session:p1 = session.query(Person).filter(Person.name == '呂布').first()p1.age = 20# 提交事務(wù)session.commit()

?

  1. 使用上下文管理器創(chuàng)建了一個(gè)會(huì)話對(duì)象 session。

  2. 使用 session.query(Person).filter(Person.name == '呂布').first() 查詢了名字為 '呂布' 的第一個(gè) Person 對(duì)象,并將其賦給了變量 p1。

  3. p1 對(duì)象的 age 屬性更新為 20p1.age = 20。

  4. 最后,通過 session.commit() 提交了事務(wù),將更新保存到數(shù)據(jù)庫(kù)中

刪除對(duì)象

將需要?jiǎng)h除的數(shù)據(jù)從數(shù)據(jù)庫(kù)中查找出來,然后使用session.delete方法將這條數(shù)據(jù)從session中刪除,最后做commit操作就可以了

def delete_data():with Session() as session:p1 = session.query(Person).filter(Person.name == '貂蟬').first()session.delete(p1)session.commit()
  1. 使用上下文管理器創(chuàng)建了一個(gè)會(huì)話對(duì)象 session。

  2. 使用 session.query(Person).filter(Person.name == '貂蟬').first() 查詢了名字為 '貂蟬' 的第一個(gè) Person 對(duì)象,并將其賦給了變量 p1

  3. 使用 session.delete(p1) 刪除了 p1 對(duì)象,即刪除了名字為 '貂蟬' 的人員信息。

  4. 最后,通過 session.commit() 提交了事務(wù),將刪除操作保存到數(shù)據(jù)庫(kù)中。

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

相關(guān)文章:

  • 企業(yè)產(chǎn)品展示型網(wǎng)站案例google下載官網(wǎng)
  • 有什么網(wǎng)站做生鮮配送的南寧seo規(guī)則
  • 如何做電商網(wǎng)站 昆明谷歌搜索網(wǎng)址
  • 哪里有給網(wǎng)站做360廣告投放是什么工作
  • 效果型網(wǎng)站建設(shè)網(wǎng)址域名大全2345網(wǎng)址
  • 服務(wù)器網(wǎng)站 都被做跳轉(zhuǎn)關(guān)鍵詞是什么意思
  • 網(wǎng)站建設(shè)的代碼關(guān)鍵字c語(yǔ)言
  • 網(wǎng)站上傳頁(yè)面seo查詢友情鏈接
  • 泰州做網(wǎng)站的推廣文案怎么寫
  • 鄭州龍華小學(xué)網(wǎng)站建設(shè)今天最新的新聞?lì)^條新聞
  • 免費(fèi)做網(wǎng)站bz3399西安百度公司
  • 進(jìn)口外貿(mào)流程寧波seo營(yíng)銷
  • 企業(yè)手機(jī)網(wǎng)站建百度競(jìng)價(jià)
  • 用vs做網(wǎng)站在安裝時(shí)要勾選建立一個(gè)網(wǎng)站需要多少錢
  • 網(wǎng)站建立快捷方式企業(yè)整站推廣
  • 高培淇自己做的網(wǎng)站seo優(yōu)化一般包括哪些內(nèi)容
  • 網(wǎng)站建設(shè)與運(yùn)營(yíng)策劃書站長(zhǎng)工具seo綜合
  • wordpress綁定槐蔭區(qū)網(wǎng)絡(luò)營(yíng)銷seo
  • 電影網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)上海好的網(wǎng)絡(luò)推廣公司
  • 保定網(wǎng)站設(shè)計(jì)概述百度關(guān)鍵詞優(yōu)化公司哪家好
  • wordpress add option臨沂網(wǎng)站seo
  • 網(wǎng)站制作費(fèi)可以做業(yè)務(wù)宣傳費(fèi)教程seo推廣排名網(wǎng)站
  • 網(wǎng)站后臺(tái)管理系統(tǒng)需求長(zhǎng)沙網(wǎng)站快速排名提升
  • php企業(yè)網(wǎng)站開發(fā)源碼免費(fèi)接單平臺(tái)
  • 公司網(wǎng)站建設(shè)工作網(wǎng)站快照優(yōu)化公司
  • 宿遷哪里做網(wǎng)站百度關(guān)鍵詞檢測(cè)工具
  • 廣告線上推廣方式秦皇島網(wǎng)站seo
  • 網(wǎng)站建設(shè)規(guī)劃公司地址中國(guó)十大搜索引擎網(wǎng)站
  • 開源的網(wǎng)站系統(tǒng)軟文范文200字
  • 網(wǎng)頁(yè)設(shè)計(jì)與制作實(shí)訓(xùn)報(bào)告結(jié)果網(wǎng)站搜索引擎優(yōu)化診斷