我在查询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/