尝试使用django从Postgres DB中依次获取下一个值

bvk*_*bvk 7 sql django postgresql

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

select nextval('winner')
Run Code Online (Sandbox Code Playgroud)

优胜者是我要从中获得下一个价值的顺序。这是我的代码:

from django.db import connection, transaction

.....

cursor = connection.cursor()

result = cursor.execute("select nextval('winner')")
Run Code Online (Sandbox Code Playgroud)

结果始终是一个NoneType对象。这似乎很简单明了,但我无法完成这项工作。我已经在交互式控制台中尝试了相同的结果。如果我查看connection.queries对象,则会看到以下内容:

{'time': '0.000', 'sql': "select nextval('winner')"}
Run Code Online (Sandbox Code Playgroud)

生成的sql有效。有任何想法吗?

我正在使用:

  • Django 1.1
  • Python 2.6
  • Postgres 8.3
  • Psycopg2
  • Mac OSX

Sar*_* Ak 8

该代码将起作用:

from django.db import connection, transaction

cursor = connection.cursor()
cursor.execute("select nextval('winner')")
result = cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 6

cursor.execute 总是返回无。

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

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