Python django postgresql查询不工作
我有一个postgreSQL数据库,它有一个在django之外创建的表Python django postgresql查询不工作,python,mysql,sql,django,postgresql,Python,Mysql,Sql,Django,Postgresql,我有一个postgreSQL数据库,它有一个在django之外创建的表foo。我使用manage.py inspectdb为我的表foo构建模型。当我使用MySQL时,这种技术工作得很好,但在PostgreSQL中,它却失败得很惨。这个表有好几GB,我使用PostgreSQL“COPY”从一个文本文件构建它 我可以在表foo上运行原始查询,所有内容都会执行和预期 比如说 foo.objects.raw('bar_sql') 按预期执行 但运行如下查询: foo.objects.get(bar=
foo
。我使用manage.py inspectdb
为我的表foo
构建模型。当我使用MySQL时,这种技术工作得很好,但在PostgreSQL中,它却失败得很惨。这个表有好几GB,我使用PostgreSQL“COPY”从一个文本文件构建它
我可以在表foo
上运行原始查询,所有内容都会执行和预期
比如说
foo.objects.raw('bar_sql')
按预期执行
但运行如下查询:
foo.objects.get(bar=bar)
扔
foo
没有天生的id
字段。据我所知,django应该创建一个。在django之外创建表时,我有没有破坏过这一步骤
查询在其表已填充的模型上运行,并在所有情况下按预期运行
我在这里遗漏了一些非常基本的东西,任何帮助都将不胜感激
我将django 1.6与postgreSQL 9.3一起使用。django不会修改现有的数据库表。它只创建新表。如果您有现有的表,它通常根本不会触及它们 “据我所知,django应该创建一个。”-->它只在创建表时向表中添加主键,这意味着您不需要在模型中显式指定主键,但它不会对现有表执行任何操作 因此,如果您稍后决定向模型中添加字段,则必须手动更新数据库
在本例中,您需要做的是,通过手动数据库管理,确保表具有主键,并且主键的名称为“id”(虽然我不确定是否有必要,但最好这样做)。因此,使用数据库管理工具,修改表并添加主键,并将其命名为id。然后它应该开始工作。您的表和模型看起来如何?Django可能无法识别哪个列是主键,因此它会查找默认的“id”。您的模型应该有一个带pimary_key=true的字段谢谢您的帮助。你完全正确。我从未设置过主键。非常感谢您的帮助。
ProgrammingError column foo.id does not exist LINE 1: SELECT "foo"."id", "foo"."bar1", "all_...