170 похожих чатов

Кто-То юзает Python внутри SQL Server ? Нужна помощь с входными

параметрами хранимой процедуры, которые передаются в Python код:

CREATE PROCEDURE SSCC_PALET_HIERARCHY
@SSCC as VARCHAR(MAX)
AS
BEGIN
exec sp_execute_external_script
@language = N'Python',
@script=N'
import requests
import json
import os
import time
import pandas as pd
from pandas.io.json import json_normalize

file_token = open("C:\Python\MDLP\Auth\\api_token.txt")
token = file_token.read()
file_token.close()

URL = "http://10.40.11.25:48080/api/v1/reestr/sscc/+' + @SSCC + '/hierarchy"
headers = {"Authorization": "token"+" "+str(token), "Content-type": "application/json"}
answer = requests.get(URL, headers = headers, verify=False)
test = json.loads(answer.text)
df = pd.json_normalize(test,"down")

Как передать @SSCC в URL без ошибок?

21 ответов

14 просмотров

Стараемся изо всех сил избегать питона внутри БД.

Egor-Zhulanov Автор вопроса

почему?

мб это шутка про то, что все юзают пайтон для бд

Как вообще БД ведёт себя когда у тебя есть тупить начинает и твой requests.get подвисает?

Egor-Zhulanov Автор вопроса

Python для БД одно, меня интересует Python внутри БД

https://docs.microsoft.com/en-us/sql/machine-learning/tutorials/quickstart-python-functions?view=sql-server-ver15 наверное как-то так , @params = N' @pythonparam str' , @pythonparam = @SSCC

Egor-Zhulanov Автор вопроса

Абсолютно нормально, просто исключение пишешь и все Это больше для аналитики и построения отчета ведь

Egor-Zhulanov Автор вопроса

О, спасибо, посмотрю не нагуглил ничего толкового

Ну смотри конечно, ок.

Погоди, какое "исключение"?

Egor-Zhulanov Автор вопроса

ну если ты получил на get или post, какую либо ошибку, выводишь эту ошибку и все, у тебя inserta или любой другой процедуры ведь нет, чтобы порушить базу

Мне прям больно смотреть на этот код. Слжши не экранированы, проверка сертификатов отключена, реквестс юзается без пула соединений (считай каждый запрос дольше), код ответа не проверяется, зачем-то контент тайп без тела, и нао6в ответе руками жсон парсится.

Ошибку похуй. Что будет когда функция повиснет из-за сети на 10 секунд?

Egor-Zhulanov Автор вопроса

До всего выше перечисленного я пока не дошел, замечания учту

Egor-Zhulanov Автор вопроса

Ничего, перезапуск соединения будет на стороне сервиса построения отчета

Какого соединения? Что с самой СУБД произойдет в этот момент?

Egor-Zhulanov Автор вопроса

Ничего, ошибку выдаст

какую?

"превышено количество доступных коннектов"

Egor-Zhulanov Автор вопроса

Зачем экранировать слеши, если все работает и так? Проверка сертификатов отключена, по причине подмены сертификатов на уровне домена, иначе SSL HANDSHAKE и используется stunnel для обхода проверки, поэтому не чистый url. Контент тайп с телом, application/json. А чем плох парсинга жсон руками, там ведь далее он преобразуется в датафрейм? На счет юзания реквестс с пулом соединения, посмотрю, не использовал.

работчает чудом

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта