我在查询sqlite数据库时遇到了一些问题。有人看过这个吗?很可能我在做傻事
这里有一个模式:

BEGIN;
CREATE TABLE "homepage_user" (
    "username" varchar(20) NOT NULL PRIMARY KEY,
    "first_name" varchar(20) NOT NULL,
    "last_name" varchar(20) NOT NULL
)
;
CREATE TABLE "homepage_oncall" (
    "id" integer NOT NULL PRIMARY KEY,
    "user_id" varchar(20) NOT NULL REFERENCES "homepage_user" ("username"),
    "start_date" datetime,
    "end_date" datetime
)
;

COMMIT;

然后当我从django的交互式shell查询数据时:
...
>>> cursor.execute('SELECT user_id from homepage_oncall').fetchall()
[(u'amencke',), (u'jdoe',), (u'jbloggs',)]

然而,任何试图查询“homepage\u oncall.user\u id”的行为都将遭到严厉的谴责:
>>> query = cursor.execute('SELECT first_name, last_name FROM homepage_user WHERE homepage_user.username = homepage_oncall.user_id AND NOW() BETWEEN homepage_oncall.start_date AND homepage_oncall.end_date')
...
DatabaseError: no such column: homepage_oncall.user_id

我在这里看了一下,似乎这个问题在创建模式后编辑了它之后就出现了——但是(在未能解决“manage.py migrate”的问题之后,我实际上删除并重新创建了整个数据库以排除这个问题——它中没有任何内容
谢谢,
亚瑟

最佳答案

你的问题出在你的SQL中。从一个表中SELECT并尝试对另一个表应用WHERE条件,而不执行隐式或显式JOIN
Django还提供了一个非常好的ORM,因此我建议坚持使用它,而不是对数据库运行原始查询,特别是在您不熟悉编写SQL查询的情况下

关于python - 找不到Django sqlite列错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29647155/

10-11 22:31
查看更多