我在查询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查询数据时:
^{pr2}$但是-任何试图查询“主页”的尝试_oncall.user用户名“将会受到严厉的谴责:
>>> 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
我看了一下这里,似乎这个问题是在创建一个模式之后编辑它之后出现的-但是(在没有解决这个问题之后管理.py实际上,我删除并重新创建了整个数据库,以排除这一点——反正里面什么也没有
谢谢, 亚瑟
你的问题出在你的SQL中。您
SELECT
来自一个表并尝试在另一个表上应用WHERE
条件,而不执行隐式或显式JOIN
。在Django还提供了一个非常好的ORM,因此我建议您坚持使用它,而不是对数据库运行原始查询,特别是如果您不擅长编写SQL查询的话
相关问题 更多 >
编程相关推荐