尝试从Postgres数据库中获取下一个序列值,使用Django。

7

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

select nextval('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
2个回答

11

这段代码将有效运行:

from django.db import connection, transaction

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

关于游标的完整文档


6

cursor.execute 永远返回None。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接