尝试使用django从postgres DB获取下一个值

时间:2011-03-27 17:33:30

标签: sql django postgresql

我在我的数据库中定义了一个我希望在我的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 个答案:

答案 0 :(得分:5)

此代码可以使用:

//needs unit

答案 1 :(得分:4)

cursor.execute 始终返回无。

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

请参阅the documentation,但请注意,这实际上与Django无关,而是标准的Python SQL DB API。