Проблемы с соединением SQL с фоновым скриптом Python - PullRequest
0 голосов
/ 03 марта 2019

У меня есть скрипт 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...