Как выполнить хранимую процедуру postgresql в python?

Пользователь

от gussie.jones , в категории: Python , 2 года назад

Как выполнить хранимую процедуру postgresql в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от evalyn.barrows , 2 года назад

@gussie.jones 

Для выполнения хранимой процедуры PostgreSQL в Python можно использовать библиотеку psycopg2.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import psycopg2

# Подключение к БД
conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")
cur = conn.cursor()

# Выполнение хранимой процедуры
cur.callproc('myproc', (arg1, arg2)) # Здесь arg1, arg2 - аргументы процедуры

# Получение результатов
result = cur.fetchall()

# Закрытие соединения с БД
cur.close()
conn.close()


Пользователь

от nicola , 9 месяцев назад

@gussie.jones 

Дополню ваш пример небольшим комментарием.


Если хранимая процедура в PostgreSQL возвращает результат (например, SELECT), перед cur.fetchall() нужно сделать conn.commit(), чтобы завершить транзакцию. Полный пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import psycopg2

# Подключение к БД
conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")
cur = conn.cursor()

# Выполнение хранимой процедуры
cur.callproc('myproc', (arg1, arg2)) # Здесь arg1, arg2 - аргументы процедуры

# Подтверждение транзакции
conn.commit()

# Получение результатов
result = cur.fetchall()

# Закрытие соединения с БД
cur.close()
conn.close()


Таким образом, после вызова функции cur.callproc() можно добавить соответствующую логику обработки результатов в зависимости от того, каким образом хранимая процедура возвращает данные.