Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Python sqlalchemy列名为user,不一致_Python_Sql_Postgresql_Sqlalchemy - Fatal编程技术网

Python sqlalchemy列名为user,不一致

Python sqlalchemy列名为user,不一致,python,sql,postgresql,sqlalchemy,Python,Sql,Postgresql,Sqlalchemy,我正在通过sqlalchemy(python)访问postgresql数据库。 在那里我有一个像这样的塔: SELECT * from mytable; id | user | password | host | port ----+------+----------+-----------------+------ 1 | abc | def | 127.0.0.1 | 21 但是现在如果我尝试做一个等价的(我想…)从我的代码中选

我正在通过sqlalchemy(python)访问postgresql数据库。
在那里我有一个像这样的塔:

SELECT * from mytable;

 id | user | password |      host       | port 
----+------+----------+-----------------+------
  1 | abc  | def      |    127.0.0.1    |   21 
但是现在如果我尝试做一个等价的(我想…)从我的代码中选择如下:

s = sql.select(columns=['user', 'password', ...]).select_from('mytable')
我得到的不是用户列(abc)中的条目,而是数据库用户的名称

我还注意到,如果在select语句中明确指定了列名,psql客户端会将用户字段重命名为“current_user”:

SELECT user, password, host, port FROM mytable;

 current_user | password |      host       | port 
--------------+----------+-----------------+------
 abc          | def      |    127.0.0.1    |   21
我是否必须重命名所有表列以避免混淆?
还是sqlalchemy为这个问题提供了解决方案

以下是规格表:

\dS mytable;
                                Table "public.mytable"
  Column  |            Type             |                            Modifiers                             
----------+-----------------------------+--------------------------------------------------------------------
 id       | integer                     | not null default nextval('mytable_id_seq'::regclass)
 user     | character varying           | not null
 password | character varying           | not null
 host     | character varying           | not null
 port     | integer                     | not null

Indexes:
    "mytable_pkey" PRIMARY KEY, btree (id)
常见的错误

user
是的别名,是SQL标准伪函数的关键字

如果您想要该名称的表或列,请使用
“user”
(即双重引用标识符)。或者选择不与之冲突的表/列名

ORMs和查询生成器应该自动双引号引用所有关键字(或者所有标识符,因为这样做没有坏处)。不幸的是,大多数人没有