我正在寫一個Python程序來讀取列的名稱和列的類型需要滿足。如何將第三個表格加入兩個聯合表格的結果中?
我想放置的結果是這樣的:通過使用打印
print "{0}{1}=Column({2})".format(" "*5,SysColumns.name,SysTypes.xtype)
id_index=Column(int)
我會用三個表:SysColumns
,SysObjects
和SysTypes
:
class SysColumns(BaseModel):
__tablename__ = "SysColumns"
name=Column(String,primary_key=True)
colorder=Column(Integer,primary_key=True)
id=Column(Integer,primary_key=True)
xtype = Column(String, primary_key=True)
class SysObjects(BaseModel):
__tablename__ = "SysObjects"
name=Column(String)
id=Column(Integer,primary_key=True)
xtype=Column(String,primary_key=True)
class SysTypes(BaseModel):
__tablename__ = "SysTypes"
name = Column(String, primary_key=True)
xtype = Column(String)
SysColumns
具有相同的列id
在SysObjects
中,而SysTypes
與SysColumns
具有相同的列xtype
。
原始代碼如下:
def dispMod(session,tableName):
result=session.query(SysColumns). \
join(SysObjects,SysColumns.id==SysObjects.id).\
filter(SysObjects.xtype=='u').\
filter(SysObjects.name==tableName).\
order_by(SysColumns.colorder)
for sysColumns in result:
print "{0}{1}=Column({2})".format(" "*5,SysColumns.name,SysColumns.xtype)
結果可以顯示,如:
id_index=Column(56)
現在我需要尋找在SysTypes
數56來改變它的類型是代表。
SysTypes
列有SysTypes.xtype
和SysTypes.name
。 我想讓它顯示我的名字,而不是xtype
:
print "{0}{1}=Column({2})".format(" "*5,SysColumns.name,Systypes.name)
我不知道如何使用上面的結果加入systypes中表中它找到的名字。
我可以寫查詢來搜索SysColumns.name
和SysTypes.name
一次嗎?
究竟是什麼,你真正想要實現?看起來你是從你的數據生成代碼,但爲什麼? –
是的,我將在另一個程序中使用數據類型和列名,我不想從數據庫中一個一個複製和粘貼。所以我想從我的數據庫中生成代碼,這將在我的工作中更高效。 – binbeing
但是爲什麼?什麼是最終目標?也許一些現有的工具可能更適合你的任務。 –