国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Essential SQLAlchemy2th學(xué)習(xí)筆記之反射Reflection

NSFish / 3182人閱讀

摘要:基于反射對象進行查詢模塊反射這里我們不再使用而是使用擴展模塊的獲取所有的對象名獲取表對象進行操作反射關(guān)聯(lián)關(guān)系可以反射并建立表之間的但是建立關(guān)聯(lián)列的命名為例如關(guān)于更多信息請詳細參看官方文檔

示例數(shù)據(jù)庫下載:http://chinookdatabase.codepl...
在SQLALchemy中,我們使用反射技術(shù)來獲取相關(guān)database schema信息,如tables,views,indexes等等

Core模塊反射 反射單表
from sqlalchemy import MetaData, create_engine
metadata = MetaData()
engine = create_engine("sqlite:///Chinook_Sqlite.sqlite")
from sqlalchemy import Table
#這里我們并沒有使用Column來定義列,而是使用autoload,autoload_with參數(shù)來從已有數(shù)據(jù)表中反射出相關(guān)列定義。
artist = Table("Artist", metadata, autoload=True, autoload_with=engine)
#接下來使用反射出來的表對象進行相關(guān)查詢
artist.columns.keys() #列出所有的列名
from sqlalchemy import select
s = select([artist]).limit(10)
engine.execute(s).fetchall()
#metadata.tables["Artist"]
#artist.foreign_keys
#from sqlalchemy import ForeignKeyConstraint
#album.append_constraint(ForeignKeyConstraint(["ArtistId"], ["artist.ArtistId"]))
#str(artist.join(album))
反射整個數(shù)據(jù)庫
#使用reflect()方法,它不會返回任何值
metadata.reflect(bind=engine)
#但是我們?nèi)匀豢梢赃M行相關(guān)檢索
metadata.tables.keys() #獲取所有的表名

注意:從SQLAlchemy1.0版本開始,我們不能通過反射獲取CheckConstraints, comments, or triggers.You also can’t reflect client-side defaults or an association between a sequence and a column.(這意味著我們會失去注釋,或者表關(guān)聯(lián)關(guān)系)但是我們可以通過相關(guān)方法或函數(shù)手動添加它們。

基于反射對象進行查詢
playlist = metadata.tables["Playlist"]
from sqlalchemy import select
s = select([playlist]).limit(10)
engine.execute(s).fetchall()
ORM模塊反射 Reflecting a Database with Automap

這里我們不再使用declarative_base而是使用擴展模塊的automap_base

from sqlalchemy.ext.automap import automap_base
Base = automap_base()
from sqlalchemy import create_engine
engine = create_engine("sqlite:///Chinook_Sqlite.sqlite")
Base.prepare(engine, reflect=True)
Base.classes.keys() #獲取所有的對象名
#獲取表對象
Artist = Base.classes.Artist
Album = Base.classes.Album

#進行操作
from sqlalchemy.orm import Session
session = Session(engine)
for artist in session.query(Artist).limit(10):
    print(artist.ArtistId, artist.Name)
Reflected Relationships反射關(guān)聯(lián)關(guān)系

Automap可以反射并建立表之間的many-to-one, one-to-many, and many-to-many relationships.
但是建立關(guān)聯(lián)列的命名為< related_object>_collection例如:

artist = session.query(Artist).first()
for album in artist.album_collection:
    print("{} - {}".format(artist.Name, album.Title))

關(guān)于Automap更多信息請詳細參看官方文檔

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38264.html

相關(guān)文章

  • Essential SQLAlchemy2th學(xué)習(xí)筆記自動生成代碼

    摘要:支持從現(xiàn)有數(shù)據(jù)庫自動生成代碼,并支持一對多,一對一,多對多的關(guān)聯(lián)關(guān)系。生成整個庫的代碼指定表保存到指定文件 pip install sqlacodegen sqlacodegen支持從現(xiàn)有數(shù)據(jù)庫自動生成ORM代碼,并支持一對多,一對一,多對多的關(guān)聯(lián)關(guān)系。 #生成整個庫的代碼 sqlacodegen sqlite:///Chinook_Sqlite.sqlite #指定表 sqlacod...

    Sleepy 評論0 收藏0
  • Essential SQLAlchemy2th學(xué)習(xí)筆記Alembic數(shù)據(jù)庫遷移

    摘要:默認的可以增量式創(chuàng)建數(shù)據(jù)庫缺失的表,但是無法做到修改已有的表結(jié)構(gòu),或刪除代碼中已經(jīng)移除的表。這個時候我們就需要用到這個庫。 SQLAlchemy默認的create_all()可以增量式創(chuàng)建數(shù)據(jù)庫缺失的表,但是無法做到修改已有的表結(jié)構(gòu),或刪除代碼中已經(jīng)移除的表。這個時候我們就需要用到Alembic這個SQLAlchemy migrations庫。安裝:pip install alembi...

    cartoon 評論0 收藏0
  • Essential SQLAlchemy2th學(xué)習(xí)筆記ORM模塊

    摘要:你應(yīng)該使用工廠類來創(chuàng)建類,因為這確保了配置參數(shù)的正確性。對象包含創(chuàng)建數(shù)據(jù)庫連接所需的一切信息,它不會立即創(chuàng)建連接對象,而是會在我們進行具體操作時創(chuàng)建。注意生產(chǎn)環(huán)境不要使用這個選項。關(guān)于選擇的最佳實踐使用迭代方式獲取所有值,而不是。 定義模式Defining Schema 定義ORM類的4個步驟: 繼承declarative_base()函數(shù)返回的類 定義__tablename__屬性...

    JasonZhang 評論0 收藏0
  • Laravel學(xué)習(xí)筆記PHP反射(Reflection) (上)

    摘要:說明中經(jīng)常使用的反射特性來設(shè)計代碼,本文主要學(xué)習(xí)的反射特性,來提高寫代碼時的設(shè)計質(zhì)量。提供一套檢測的兩個工具包和,類似于探針一樣的東西來探測這些一等公民。限于篇幅,下篇再聊下反射。 說明:Laravel中經(jīng)常使用PHP的反射特性來設(shè)計代碼,本文主要學(xué)習(xí)PHP的反射特性,來提高寫代碼時的設(shè)計質(zhì)量。PHP提供一套檢測class, interface, trait, property, me...

    JessYanCoding 評論0 收藏0
  • 《深入理解ES6》筆記——代理(Proxy)和反射Reflection)API(12)

    摘要:方法與代理處理程序的方法相同。使用給目標函數(shù)傳入指定的參數(shù)。當(dāng)然,不用反射也可以讀取的值。的例子我們可以理解成是攔截了方法,然后傳入?yún)?shù),將返回值賦值給,這樣我們就能在需要讀取這個返回值的時候調(diào)用。這種代理模式和的代理有異曲同工之妙。 反射 Reflect 當(dāng)你見到一個新的API,不明白的時候,就在瀏覽器打印出來看看它的樣子。 showImg(https://segmentfault....

    ZHAO_ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<