Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问使用sqlalchemy的Python程序创建的表_Python_Postgresql_Sqlalchemy - Fatal编程技术网

无法访问使用sqlalchemy的Python程序创建的表

无法访问使用sqlalchemy的Python程序创建的表,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,我已经使用python脚本在DB postgres中使用sqlalchemy创建了一些表。 当我为uname:password组合使用shell登录db并执行命令以显示表时 \dt 它给我以下输出 Schema | Name | Type | Owner --------+------------------+-------+---------------- public | CLASS_DESCRIPTOR | table | prefix_m

我已经使用python脚本在DB postgres中使用sqlalchemy创建了一些表。 当我为uname:password组合使用shell登录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)
tables测试是使用普通python脚本创建的,user,user\u pref是使用下面给出的简单sqlalchemy代码创建的

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))
)
元数据。创建所有(引擎)

但是表
CLASS\u描述符
是由另一个使用sqlalchemy的python脚本创建的。 所以当我做
时,从类描述符中选择*
它给了我以下的错误

ERROR:  relation "class_descriptor" does not exist.

当使用双引号指定标识符时,postgresql区分大小写,如

create table "FOO" (...);
但当不存在引号时,规范化大小写(全部小写);为了使用该表,您必须为postgresql提供一个大小写正确的标识符(因此带引号)。即:

select * from "CLASS_DESCRIPTOR"

完全正确由于PostgreSQL的大小写约定,我发现在PostgreSQL中使用所有小写名称或类似的
名称更容易。你可以使用任何你喜欢的大小写,只要你跳过引号,引号会产生令人惊讶的效果,而不是一般的大小写。当然,但是PG自己的管理工具(如pgadmin)无论在代码中如何指定,均以所有小写字母显示未加引号的名称。如果您想在pgadmin中轻松区分长名称中的单词,下划线是一种简单的方法。。工作正常。