Это вопрос из двух частей, но я доберусь до моей первой головоломки.
У меня есть код, который я просто пытаюсь проверить, где я хочу, чтобы Python запускал хранимую процедуру с необходимыми переменными, и она запускается и даже показывает новую строку. Однако, если я захожу в БД и запускаю инструкцию SELECT, чтобы показать мне данные, его там нет. Как будто БД заблокировала его или что-то странное.
Этот код работает, если я запускаю оператор выбора вместо этой хранимой процедуры. Хранимая процедура работает, и даже когда я запускаю этот код, Python запустит хранимую процедуру и выплюнет новую строку (вместе с новым номером строки, который автоматически генерируется из-за идентификатора, который у меня есть в столбце)
import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
'Server=REPORT\INSTANCE;'
'UID=UserID;'
'PWD=Password;'
'Database=ReportDB;'
'Trusted_Connection=no;')
cursor = conn.cursor()
cursor.execute('EXEC [Schema].[Comments] \'2019-04-18 00:00:00.000\',\'Team\',\'1900-01-01 13:12:16.000\',\'testing this string\',\'username\'')
for row in cursor:
print(row)
Вид потерянного здесь. Python запустит хранимую процедуру (которую я установил для запуска выбора в конце, чтобы доказать, что данные были зафиксированы), и Python показывает это, но я не вижу его в реальной БД. Эта линия исчезла.

Вы можете видеть здесь, 470 - это столбец идентификатора (идентификатор, не ноль), и это то, что должно быть.

Обратите внимание, что самая последняя запись по-прежнему 469
- Тот же экземпляр
- То же DB
EDIT
Я только что заметил что-то в Питоне. Каждый раз, когда я запускаю код Python, он запускает код, и хранимая процедура делает выбор в конце, но каждый раз, когда я запускаю его, CommentsID
увеличивается на 1 (как и должно быть), но НЕ запоминает предыдущие, вставленные Python. Единственное, что возвращает оператор SELECT, это то, что я зафиксировал через сам SQL.

Обратите внимание, что CommentsID (первое число в каждой строке, начинающееся с 4) идет от 469 до 471. Тем не менее, у меня только что было изображение выше, которое показывает 470 - куда делось 470?!
Вторая часть:
Мне трудно помещать переменные в этот фрагмент кода EXEC. Я думаю, что мне нужно заключить его в одинарные кавычки, что означает, что мне нужно поставить \ перед кавычками, которые мне нужны, чтобы остаться для кода SQL. Но когда я делаю это, а затем пытаюсь запустить его, я не могу заставить его извлекать переменные.
Вот какой SQL должен быть:
EXEC [schema].[Comments] 'Username'
В Python я знаю, что он должен быть в одинарных кавычках, но поскольку в коде SQL есть кавычки, вы обычно просто ставите \ перед таким образом:
'EXEC [schema].[Comments] \'Username\''
Это работает. Однако затем я хочу, чтобы имя пользователя извлекалось из переменной, а не было строкой.