首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用psycopg2从psycopg2中的数据库中获取表?

如何使用psycopg2从psycopg2中的数据库中获取表?
EN

Stack Overflow用户
提问于 2021-08-29 21:11:08
回答 1查看 43关注 0票数 0

在run中,如果我从SQL终端中运行SHOW DATABASES;,我会得到:

代码语言:javascript
复制
    database_name   | owner | primary_region | regions | survival_goal
--------------------+-------+----------------+---------+----------------
  _a66df261120b6c23 | root  | NULL           | {}      | NULL
  defaultdb         | root  | NULL           | {}      | NULL
  postgres          | root  | NULL           | {}      | NULL
  sammy             | root  | NULL           | {}      | NULL
  system            | node  | NULL           | {}      | NULL
  test123           | root  | NULL           | {}      | NULL
  test3             | root  | NULL           | {}      | NULL
  test4             | root  | NULL           | {}      | NULL
  test5             | root  | NULL           | {}      | NULL
  test9             | root  | NULL           | {}      | NULL
(10 rows)

如果我现在运行SHOW TABLES FROM _a66df261120b6c23,我会得到:

代码语言:javascript
复制
  schema_name |    table_name     | type  | owner | estimated_row_count | locality
--------------+-------------------+-------+-------+---------------------+-----------
  public      | __Auth            | table | root  |                   0 | NULL
  public      | tabDefaultValue   | table | root  |                   0 | NULL
  public      | tabDocType Action | table | root  |                   0 | NULL
  public      | tabDocType Link   | table | root  |                   0 | NULL
  public      | tabFile           | table | root  |                   0 | NULL
  public      | tabSeries         | table | root  |                   0 | NULL
  public      | tabSessions       | table | root  |                   0 | NULL
  public      | tabSingles        | table | root  |                   0 | NULL
  public      | tabdocfield       | table | root  |                   0 | NULL
  public      | tabdocperm        | table | root  |                   0 | NULL
  public      | tabdoctype        | table | root  |                   0 | NULL

问题是,当我试图从psycopg2执行相同的查询时,例如:SHOW TABLES FROM _a66df261120b6c23,我得到了错误:

代码语言:javascript
复制
test1 = cur.execute("show tables from _a66df261120b6c23;")
psycopg2.errors.InvalidCatalogName: database "root" does not exist

以下是python脚本:

代码语言:javascript
复制
with rdb_conn.cursor() as cur:
    # cur.execute('CREATE database test9;')
    test1 = cur.execute("show tables from _a66df261120b6c23;")
    # print("test1: ", test1)
    # result = cur.execute("CREATE DATABASE test9;")
rdb_conn.commit()

我应该提一下,创建数据库不是问题,例如,CREATE DATABASE test9就没有任何问题。所以我的问题是,如何通过psycopg2获取给定数据库中的表?

代码语言:javascript
复制
cursor.execute("""SELECT table_name FROM information_schema.tables
       WHERE table_schema = 'public'""")

对我不起作用,_a66df261120b6c23中的表都不显示

以下是用户列表:

代码语言:javascript
复制
      username      | options | member_of
--------------------+---------+------------
  _a66df261120b6c23 |         | {}
  admin             |         | {}
  doug              |         | {admin}
  postgres          |         | {}
  root              |         | {admin}
  sammy             |         | {admin}
  sammy2            |         | {admin}
  sammy3            |         | {}
  test_user         |         | {}
EN

回答 1

Stack Overflow用户

发布于 2021-08-29 22:00:28

弄清楚了,问题是fetchall 2的execute没有返回任何东西,所以我也应该使用它。

代码语言:javascript
复制
cur.execute("show tables from _a66df261120b6c23")
result = cur.fetchall()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68976941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档