Próbuję użyć przekierowania po stronie serwera w psycop2, jak opisano w this blog post. W istocie, jest to osiągane zJak używać kursorów po stronie serwera z django i psycopg2?
from django.db import connection
if connection.connection is None:
cursor = connection.cursor()
# This is required to populate the connection object properly
cursor = connection.connection.cursor(name='gigantic_cursor')
Kiedy wykonać zapytanie:
cursor.execute('SELECT * FROM %s WHERE foreign_id=%s' % (table_name, id))
dostaję ProgrammingError
:
psycopg2.ProgrammingError: can't use a named cursor outside of transactions
ja naiwnie próbował stworzyć transakcja przy użyciu
cursor.execute('BEGIN')
przed wykonaniem instrukcji SELECT
. Jednak powoduje to ten sam błąd generowany z linii cursor.execute('BEGIN')
.
Ja również próbowałem przy użyciu
cursor.execute('OPEN gigantic_cursor FOR SELECT * FROM %s WHERE foreign_id=%s' % (table_name, id))
ale mam takie same wyniki.
Jak dokonać transakcji w django?
Z komunikatu o błędzie wynika, że kursor znajduje się poza transakcjami . Spróbuj użyć kursorów wewnątrz transakcji. –