У меня есть скрипт Python, который обрабатывает и записывает данные в базу данных MS SQL.Я не думаю, что в этом скрипте есть что-то особенное, с приведенным ниже примером, показывающим стандартный способ получения соединения.Проблемы, с которыми я сталкиваюсь:
Во время выполнения сценария я не могу выполнить SELECT * для таблиц с помощью MS SQL Service Management Studio.Инструмент студии просто вращается над «выполнением запроса», даже для таблицы, в которой не так много данных.
И наоборот, очень часто мой сценарий кажется неспособным создать БДсоединение и зависает, по крайней мере, до тех пор, пока я не перезапущу SQL Server.
Это почти как конфликт за базу данных, но я не вижу причины, почему.Сценарий выполняет много вставок SQL, но все будет завершено в течение пары миллисекунд.Поэтому я мог бы предположить, что python и SQL будут иметь очереди в базе данных, и оба получат данные - очевидно, это не так.
Пример кода:
def __init__(self):
self.conn = pymssql.connect(host='10.1.1.1', user='dbuser', password='password', database='DB')
self.connection = self.conn
self.cursor = self.conn.cursor()
def process_item(self, item, spider):
try:
self.cursor.execute("SELECT pp.Id, pp.LowPrice, pp.HighPrice FROM PPrice pp JOIN Prop p ON pp.PId = p.PrId " \
"WHERE p.Sub=%s DESC", (item['sub'], i))
result = self.cursor.fetchone()
...
if result is None:
self.cursor.execute("I...))
if (insertPrice):
self.cursor.execute("INSERT INTO PP...)
self.connection.commit()
except Exception as e:
print(e)
return item