我在DB postgres中使用sqlalchemy使用python脚本创建了一些表。 当我使用shell为这个uname:password组合登录db并执行命令来显示表 \ DT 它给了我以下输出
Schema | Name | Type | Owner
--------+------------------+-------+----------------
public | CLASS_DESCRIPTOR | table | prefix_manager
public | test | table | prefix_manager
public | user | table | prefix_manager
public | user_prefs | table | prefix_manager
(6 rows)
使用普通的python脚本创建表测试,使用下面给出的简单sqlalchemy代码创建user,user_prefs,
from sqlalchemy import *
engine = create_engine('postgresql://prefix_manager:password1@localhost:5432/prefix_manager')
metadata = MetaData()
user = Table('user', metadata,
Column('user_id', Integer, primary_key = True),
Column('user_name', String(16), nullable = False),
Column('email_address', String(60), key='email'),
Column('password', String(20), nullable = False)
)
user_prefs = Table('user_prefs', metadata,
Column('pref_id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey("user.user_id"), nullable=False),
Column('pref_name', String(40), nullable=False),
Column('pref_value', String(100))
)
metadata.create_all(发动机)
但是表CLASS_DESCRIPTOR
是由另一个带有sqlalchemy的python脚本创建的。
所以当我SELECT * from CLASS_DESCRIPTOR
时
它给了我以下错误
ERROR: relation "class_descriptor" does not exist.
答案 0 :(得分:2)
postgresql在使用双引号指定标识符时区分大小写,如
create table "FOO" (...);
但在不存在引号时将案例(全部小写)标准化;为了使用该表,您必须为postgresql提供正确的(并因此引用的)标识符。那就是:
select * from "CLASS_DESCRIPTOR"