psycopg2 找不到现有表

问题描述 投票:0回答:1

我正在尝试使用 PostgreSQL 设置一个玩具数据库,并使用 Python 中的 psycopg2 读取表,但 psycopg2 找不到现有表。

运行以下代码时

import psycopg2

conn = psycopg2.connect(
    host="localhost",
    database="example_db",
    user="my_user",
    password="my_pw"
)
cur = conn.cursor()
cur.execute("SELECT * FROM employees")
rows = cur.fetchall()
cur.close()

我收到错误了

psycopg2.errors.UndefinedTable: relation "employees" does not exist
LINE 1: SELECT * FROM employees

如果我从命令行直接连接到 PostgreSQL 服务器,就可以找到该表

$ psql -U my_user -d example_db
psql (12.18 (Ubuntu 12.18-0ubuntu0.20.04.1))
Type "help" for help.

example_db=# SELECT * FROM employees;
 id |     name     | age | position
----+--------------+-----+-----------
  1 | John Doe     |  30 | Manager
  2 | Jane Smith   |  25 | Developer
  3 | Mike Johnson |  35 | Designer
(3 rows)

我正在使用 WSL 和 Ubuntu-20.04 发行版。


编辑:

这里是可用的数据库

$ sudo -u postgres psql
psql (12.18 (Ubuntu 12.18-0ubuntu0.20.04.1))

postgres=# \l
                              List of databases
    Name    |  Owner   | Encoding | Collate |  Ctype  |   Access privileges
------------+----------+----------+---------+---------+-----------------------
 example_db | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =Tc/postgres         +
            |          |          |         |         | postgres=CTc/postgres+
            |          |          |         |         | my_user=CTc/postgres
 postgres   | postgres | UTF8     | C.UTF-8 | C.UTF-8 |
 template0  | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
            |          |          |         |         | postgres=CTc/postgres
 template1  | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
            |          |          |         |         | postgres=CTc/postgres
(4 rows)
postgresql psycopg2 wsl-2
1个回答
0
投票

您可以通过pgAdmin连接到数据库并通过GUI检查数据库吗?

检查数据库所在的架构,并尝试将其添加到查询中,如下所示:

cur.execute("SELECT * FROM schema_here.employees")

通常新的数据库实例位于“公共”模式中,但您也可以指定“公共”以外的模式名称。

© www.soinside.com 2019 - 2024. All rights reserved.