【问题标题】:How to create tables for flask app using peewee orm without double quotes in postgresql如何在postgresql中使用peewee orm为flask应用程序创建表而没有双引号
【发布时间】:2014-01-01 00:26:39
【问题描述】:

我是 peewee orm 的新手。

Peewee 在创建表时使用双引号,这使得通过 psql shell 执行选择语句变得不必要地困难。这也适用于 django 的 orm。

我真正想要的是一个简单的:

select username,password from user;

相反,我必须这样做

select "username", "password" from "user";

我见过人们使用不需要双引号的 sqlalchemy。通过orm创建表格时,我有什么办法可以关闭双引号?

谢谢!

【问题讨论】:

  • PostgreSQL 将不带引号的标识符折叠为小写,因此只要 ct 是小写,select c from t 应该与 select "c" from "t" 相同。
  • 始终显示任何错误消息的准确文本,以及产生它们的准确 SQL。在这种情况下,我怀疑您实际上看到的是大小写混合的表格,例如 "UserName"

标签: python django postgresql flask peewee


【解决方案1】:

双引号不是实际表/列名的一部分。它们就在那里,因此您不会收到名称与保留关键字冲突的错误消息。

当从 shell 查询某些内容时,您可以放心地省略它们,假设名称不需要引号,因为我刚才提到的原因。

【讨论】:

  • 嗯...我不能使用表用户作为我的模型之一,因为 postgres 已经设置了默认用户表吗?
  • 所有内部表都以pg_开头
  • 是的,user 是 postgresql 中的保留表。
【解决方案2】:

你不能用 postgres 创建一个名为“user”的表:

psql (9.3.2)
Type "help" for help.

peewee_test=# create table user (id serial);
ERROR:  syntax error at or near "user"
LINE 1: create table user (id serial);
                     ^

peewee_test=# create table users (id serial);
CREATE TABLE

如前所述,如果您使用与保留字同名的列,则引号可防止出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多