尝试使用 django 从 postgres DB 中按顺序获取下一个值

Posted

技术标签:

【中文标题】尝试使用 django 从 postgres DB 中按顺序获取下一个值【英文标题】:Trying to get the next value in sequence from a postgres DB, with django 【发布时间】:2011-07-23 23:38:09 【问题描述】:

我在我的数据库中定义了一个序列,我想在我的 django 应用程序中使用它。我假设我可以在这里使用 django 文档中指定的原始 sql 方法:http://docs.djangoproject.com/en/1.1/topics/db/sql/。我的计划是执行以下 SQL 语句:

select nextval('winner')

winner 是我想要从中获取下一个值的序列。这是我的代码:

from django.db import connection, transaction

.....

cursor = connection.cursor()

result = cursor.execute("select nextval('winner')")

结果始终是 NoneType 对象。这看起来非常简单明了,但我无法完成这项工作。我已经在交互式控制台中尝试过,结果相同。如果我查看 connection.queries 对象,我会看到:

'time': '0.000', 'sql': "select nextval('winner')"

生成的sql有效。有什么想法吗?

我正在使用:

Django 1.1 Python 2.6 Postgres 8.3 Psycopg2 Mac OSX

【问题讨论】:

【参考方案1】:

此代码将起作用:

from django.db import connection, transaction

cursor = connection.cursor()
cursor.execute("select nextval('winner')")
result = cursor.fetchone()

full documentation about cursor

【讨论】:

【参考方案2】:

cursor.execute 总是返回无。

要从 SQL 语句中获取值,您必须使用 cursor.fetchone()(或 fetchall())。

请参阅the documentation,虽然请注意这实际上与 Django 没有任何关系,而是标准的 Python SQL DB API。

【讨论】:

以上是关于尝试使用 django 从 postgres DB 中按顺序获取下一个值的主要内容,如果未能解决你的问题,请参考以下文章

Docker Compose 无法从数据库 (jdbc:postgresql://db:5432/postgres) 为用户“postgres”获取连接:连接尝试失败

使用 Django 从 Postgres 导出 JSON 时结果不一致

在 Postgres DB 中使用大量 id 的 Django 查询过滤器

Django 测试因 InternalError 失败:没有这样的保存点。 DB:Postgres,通过 mysql

如何将 Django 的身份验证用户模型配置为具有 UUID(Postgres DB)

django中所有URL的编程错误,postgres在db中找不到表?