我在查询我的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'我实际上删除并重新创建了整个数据库来统治 - 无论如何都没有任何东西
谢谢, 亚瑟
答案 0 :(得分:1)
您的问题出在您的SQL中。您来自一个表的SELECT
并尝试在另一个表上应用WHERE
条件而不执行隐式或显式JOIN
。
Django也提供了一个非常好的ORM,所以我建议坚持使用它,而不是对数据库运行原始查询,特别是如果你不熟悉编写SQL查询