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

How to show available tables in monetdb using python api?

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

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

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')

如果您仅在特定模式中查找 table,则需要扩展查询,指定模式:

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> 是您的架构,用单引号括起来。