如何使用python api在monetdb中显示可用的表?

时间:2015-02-16 20:50:24

标签: python monetdb

使用mclient时,可以通过发出命令'\ d'列出数据库中的所有表。我正在使用python-monetdb包,我不知道如何实现相同。我见过像“SELECT * FROM TABLES”这样的例子。但我得到一个“表”表不存在的错误。

1 个答案:

答案 0 :(得分:1)

在您的查询中,您需要指定您正在查找属于默认tables架构的sys表,或sys.tables。返回MonetDB中所有非系统表名称的SQL查询是:

SELECT t.name FROM sys.tables t WHERE t.system=false

在Python中,它应该类似于:

import monetdb.sql

connection = monetdb.sql.connect(username='<username>', password='<password>', hostname='<hostname>', port=50000, database='<database>')
cursor = connection.cursor()
cursor.execute('SELECT t.name FROM sys.tables t WHERE t.system=false')

如果您只在特定架构中查找表,则需要扩展查询,指定架构:

SELECT t.name FROM sys.tables t WHERE t.system=false AND t.schema_id IN (SELECT s.id FROM sys.schemas s WHERE name = '<schema-name>')

其中<schema-name>是您的架构,由单引号括起来。