想做一个能够自动读取数据库中字段名称和设置的数据类型的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)
# SysTypes是我新加入的表格定义
class SysTypes(BaseModel):
__tablename__ = "SysTypes"
name = Column(String, primary_key=True)
xtype = Column(String)
注意:SysColumns跟SysObjects可以用id连接,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表中,读取字段xtype值为56代表的数据类型name是int,最后显示成如下形式。
id_index=Column(int)
现在我不清楚如何将这三个表连接?
我的设想结果是:
print "{0}{1}=Column({2})".format(" "*5,sysColumns.name,Systypes.name)
连着继续join就可以了