«Hello world». Мы продолжаем изучать Python, на этот раз будем вызывать хранимую процедуру (ХП) из базы данных MSSQL.Часто приходится автоматизировать рутину по работе, или просто возникла необходимость связать код с базой, данная статья придёт на помощь.В предыдущей статье мы использовали библиотеку pyodbc, в этот раз будем использовать pymssql, по ссылке доступна официальная документация.
Python — SQL: Вызов хранимых процедур
Лично я столкнулся с данной задачей в связи с необходимостью автоматизации рутинных процессов по работе. Python выбрал так как он идеально подходит для таких задач, код короткий и лаконичный. Да и к тому же язык набирает обороты, его просто понять и изучить.
Библиотеками мы называем готовые инструменты для решения определённых задач.
Pymssql — тоже библиотека 🙂
В первую очередь для использования pymssql модуля, необходимо импортировать его:
1 |
import pymssql |
Дальше при необходимости, если у нас есть входные параметры, то их необходимо прописать, в Python есть функция input() — она всегда ждёт от вас параметров, например:
1 |
my_id = input() |
Наверняка у вас хранимка ждёт параметров, она же не просто выводит данные, иначе это можно было запилить как джоб (job) и вызывать его периодически по расписанию.
И наконец-то вызов хранимой процедуры, простите за длительное ожидание 🙂
1 2 3 4 5 6 |
with pymssql.connect('server', 'user', 'password', 'yourTable') as conn: with conn.cursor() as cursor: cursor.callproc('the_name_of_your_procedure', (my_id,)) for row in cursor: print('текст для вывода >= %r' % (row)) conn.commit() |
Этого достаточно чтобы вызвать ХП, скормить ей my_id и она произведёт всю черновую работу за вас. Метод данный удобен, когда у нас несколько баз, и мы можем дополнить строками кода больше подключении.
Можно всё организовать вызовом cmd с параметрами, мы позаботились о вас и описали это тут, простите, там только для Linux машин, сейчас всё будет.
Вызываем cmd — win +r — cmd, далее в окне, указываем путь до проекта (в моём случае, но можно указать иной путь, где живёт Питон, обычно это C:\Python37-32\python.exe):
1 |
C:\PycharmProjects\PackageChains\venv\Scripts\python.exe C:/PycharmProjects/PackageChains/callproc.py |
И тут он ждёт, что вы ему подадите на вход my_id, не верите, тогда сделаем по-другому.
Создаём вывод с подсветкой:
1 2 |
init() print(Fore.GREEN + 'Введи ID:') |
init() — для корректного отображения цвета в данном окне.
Наш код изменился:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import pymssql from colorama import init from colorama import Fore init() print(Fore.GREEN + 'Введите ID:') my_id = input() with pymssql.connect('server', 'user', 'password', 'yourTable') as conn: with conn.cursor() as cursor: cursor.callproc('the_name_of_your_procedure', (my_id,)) for row in cursor: print('текст для вывода >= %r' % (row)) conn.commit() |
Теперь при вводе строк выше в cmd, у нас он ожидает ID (определённый идентификатор) на вход:
1 |
Введите ID: |
Всем большое спасибо за внимание. Теперь мы молодцы, умеем вызывать ХП из кода на Python!
Подписывайтесь на нас в социальных сетях и не забывайте про Youtube-канал!