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

发布于 2024-10-27 05:26:58 字数 821 浏览 0 评论 0原文

我在数据库中定义了一个序列,我想在 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

I have a sequence defined in my database that I want to use in my django application. I assumed I could use the raw sql method specified in the django documentation here: http://docs.djangoproject.com/en/1.1/topics/db/sql/. My plan was to execute the following SQL statment:

select nextval('winner')

where winner is the sequence I want to get the next value from. Here is my code:

from django.db import connection, transaction

.....

cursor = connection.cursor()

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

The result is always a NoneType object. This seems pretty simple and straightforward, but I haven't been able to make this work. I've tried it in the interactive console with the same results. If I look in the connection.queries object, i see this:

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

The sql generated is valid. Any ideas?

I'm using:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆追雨的时光 2024-11-03 05:26:58

此代码将起作用:

from django.db import connection

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

有关 <代码>光标

This code will work:

from django.db import connection

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

Full documentation about cursor

撩心不撩汉 2024-11-03 05:26:58

cursor.execute总是返回 None。

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

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

cursor.execute always returns None.

To get the value from the SQL statement, you have to use cursor.fetchone() (or fetchall()).

See the documentation, although note that this doesn't actually have anything to do with Django, but is the standard Python SQL DB API.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文