在對錶對象進行創建的時候,一般有兩種方式能夠完成,如下是兩種方式的創建過程對比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
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