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