2017-05-20 119 views
0

我正在使用Sqlalchemy的核心,因此我不像其他类似问题那样使用声明性基类。 如何使用引擎获取表的主键?从sqlalchemy(Core)中的表中获取主键列名称

+0

你必须澄清。你想从数据库中的模式中获取?或者你想从Python的表格定义中获取? – univerio

+0

我没有定义表格,所以我不能 –

+0

我需要直接从数据库中读取数据。 –

回答

1

所以,我刚碰到同样的问题。您需要创建一个Table对象,该对象反映您正在寻找哪个表的主键。

from sqlalchemy import create_engine, Table, MetaData 

dbUrl = 'postgres://localhost:5432/databaseName' #will be different for different db's 

engine = create_engine(dbUrl) 
meta = MetaData() 

table = Table('tableName', meta, autoload=True, autoload_with=engine) 

primaryKeyColName = table.primary_key.columns.values()[0].name 

上面的表结构对许多不同的功能是有用的。我用它来管理地理空间表,因为我不太喜欢当前的任何软件包。

在您的评论中,您提到您并未定义表格......我认为这意味着您并未创建表格的sqlalchemy模型。使用上述方法,您不需要这样做,并且可以以更动态的方式从表中收集各种信息。特别有用的,如果你被交给别人的杂乱的数据库!

希望有所帮助。