如何在python中获取sqlsoup中的模式的列名?

时间:2013-05-09 17:17:04

标签: python mysql

如何在python中使用SQLSOUP从模式/表中获取字典中的列名和类型?使用MySQLDB,我可以创建一个游标并使用cursor.description。 sqlsoup有一些等价物吗?

2 个答案:

答案 0 :(得分:0)

根据documentation

  

可以指示Table对象从中加载有关其自身的信息   相应的数据库模式对象已存在于其中   数据库。这个过程叫做反射。在最简单的情况下   您只需要指定表名,MetaData对象和   autoload =真旗。如果MetaData不是持久绑定的话   添加autoload_with参数:

>>> messages = Table('messages', meta, autoload=True, autoload_with=engine)
>>> [c.name for c in messages.columns]
['message_id', 'message_name', 'date']

答案 1 :(得分:0)

看来sqlsoup确实能够直接告诉你列名和类型而不用“下面”到sqlalchemy。 sqlsoup中的表对象有一个名为“c”的成员集合,其中包含表的所有列,如下所示:

>>> import sqlsoup
>>> db =sqlsoup.SQLSoup('sqlite:///test.sqlite')
>>> db.example_table.c
<sqlalchemy.sql.expression.ColumnCollection object at 0x1059819d0>
>>> db.example_table.c.keys()
[u'column_1', u'column_2', u'column_3']
>>> db.example_table.c['column_1']
Column(u'column_1', VARCHAR(), table=<example_table>, primary_key=True, nullable=False)
>>> db.example_table.c['column_1'].type
VARCHAR()