Django sqlite列找不到错误

时间:2015-04-15 09:57:42

标签: python mysql django sqlite

我在查询我的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_oncall.user_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'我实际上删除并重新创建了整个数据库来统治 - 无论如何都没有任何东西

谢谢, 亚瑟

1 个答案:

答案 0 :(得分:1)

您的问题出在您的SQL中。您来自一个表SELECT并尝试在另一个表上应用WHERE条件而不执行隐式或显式JOIN

Django也提供了一个非常好的ORM,所以我建议坚持使用它,而不是对数据库运行原始查询,特别是如果你不熟悉编写SQL查询