如何使用sqlalchemy处理自定义模式

时间:2017-09-28 21:17:14

标签: python sql-server database sqlalchemy

我对数据库和服务器相关的任务很陌生。我目前有两个表存储在服务器上的MSsql数据库中,我试图使用python包sqlalchemy将一些数据提取到我的本地机器。第一个表具有默认架构 dbo ,我可以使用连接字符串

'mssql+pyodbc://<username>:<password>@<dsnname>'

检查表,但另一个表有自定义架构,当我使用上一个命令时,我看不到有关该表的任何信息。我认为这是因为现在第二个表有不同的模式,python包不能再找到它了。

我正在考虑automap希望该软件包提供一种处理自定义架构的方法,但我在那里描述的许多概念我都不太了解,而且我没有尝试更改数据库只是提取数据所以不确定它是否正确,有任何建议吗?

由于

1 个答案:

答案 0 :(得分:1)

如果是自动化,你应该在反思准备时传递schema参数:

letter_list = [['A', 'B', 'C'], ['D', 'E', 'F']]
[(i, j, x) for i, y in enumerate(letter_list) for j, x in enumerate(y)]

#Returns [(0, 0, 'A'), (0, 1, 'B'), (0, 2, 'C'), (1, 0, 'D'), (1, 1, 'E'), (1, 2, 'F')]

如果您希望反映默认架构和&#34;自定义架构&#34;使用相同的自动化器,然后首先使用AutomapBase.prepare(reflect=True, schema='myschema') 实例反映两个模式,然后准备自动化器:

MetaData

如果连续为两个模式调用AutomapBase.metadata.reflect() AutomapBase.metadata.reflect(schema='myschema') AutomapBase.prepare() ,则automapper将重新创建并替换1st prepare中的类,因为这些表已经存在于元数据中。这将引发警告。