Python與數據庫 sqlalchemy 創建聲明層表對象的兩種方式

在對錶對象進行創建的時候,一般有兩種方式能夠完成,如下是兩種方式的創建過程對比sql

首先導入須要的模塊,獲取一個聲明層api

1 from sqlalchemy.sql.schema import Table, Column
2 from sqlalchemy.sql.sqltypes import Integer
3 from sqlalchemy.ext.declarative import declarative_base
4 
5 Base = declarative_base()

兩種方法,spa

  1. 第一種首先對__tablename__進行賦值,肯定表名,隨後創建列實例,賦值給同名的類屬性;
  2. 第二種方法是直接利用Table()類對__table__進行賦值,經過Table類創建起表的各項屬性信息。

Note: 此處兩種方法都使用聲明層做爲基類,第一種方法未傳入metadata,會自動使用Base.metadata,第二種方法則直接進行了傳入。code

複製代碼
1 # Method one:
2 class table_one(Base):
3     __tablename__ = 'table_one'
4     id = Column(Integer, primary_key=True)
5 
6 # Method two:
7 class table_two(Base):
8     __table__ = Table('table_two', Base.metadata, 
9             Column('id', Integer, primary_key=True))
複製代碼

最後運行顯示orm

1 print(type(table_one), type(table_one.id), table_one.id, sep='\n')
2 print(type(table_two), type(table_two.id), table_two.id, sep='\n')

輸出結果對象

複製代碼
<class 'sqlalchemy.ext.declarative.api.DeclarativeMeta'>  
<class 'sqlalchemy.orm.attributes.InstrumentedAttribute'>  
table_one.id  
<class 'sqlalchemy.ext.declarative.api.DeclarativeMeta'>  
<class 'sqlalchemy.orm.attributes.InstrumentedAttribute'>  
table_two.id  
複製代碼

從輸出的結果中能夠看出,兩種方式創建的表是相同類型的。blog

相關文章
相關標籤/搜索