Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2018 17:25:37

Port111
Зарегистрирован: 2018-03-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc не закрывает соединение

Здравствуйте. Создаю класс для работы с базой данных Microsoft SQL Server Express (64-bit) Версия 11.0.2100.60
Вот отрывок кода

 import pyodbc
import time
from datetime import datetime
class Database(object):
    def __init__(self, driver='{SQL Server}', server='localhost', port='1433', name_db='', user='sa', password=''):
        self.driver = 'DRIVER=' + driver
        self.server = 'SERVER=' + server
        self.port = 'PORT=' + port
        self.db = 'DATABASE=' + name_db
        self.user = 'UID=' + user
        self.pw = 'PWD=' + password
        self.conn_str = ';'.join([self.driver, self.server, self.port, self.db, self.user, self.pw])
    def db_connect(self):
        try:
            self.connect = pyodbc.connect(self.conn_str)
            print(datetime.now().replace(microsecond=0), 'Connect OK')
        except:
            print(datetime.now().replace(microsecond=0), 'Error connect! Repeat after 60 seconds...')
            time.sleep(60)
            db_connect(self)
    def connect_close(self):
        self.connect.close()
        print('Connect close!')
def main():
    try:
        db = Database(server='ADMIN-ПК\SQLEXPRESS', name_db='Base', password='aaaa')
        db.db_connect()
        time.sleep(60)
        db.connect_close()
        time.sleep(90)
    except:
        pass
Соединение устанавливается, делаю запросы и т.д. Все ОК. Но в конце надо закрыть соединение…
После функции db.connect_close() но до закрытия программы, в SQL Menegment Studio вижу что соединение еще активно… и оно пропадает только после закрытия программы. Но мне надо чтобы оно сразу же закрывалось. Так и не смог найти почему не срабатывает.

Лично у меня есть версия что может драйвер указан не правильно… Может быть причина в этом? И где вообще узнать какой именно драйвер мне надо указывать для какой версии MSSQL.

Заранее спасибо.

Офлайн

#2 Март 16, 2018 11:31:12

Port111
Зарегистрирован: 2018-03-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

pyodbc не закрывает соединение

Если кому интересно, на другом ресурсе пользователь Wi0M подсказал решение:

Тогда попробуй так. До использования pyodbc

 import pyodbc
pyodbc.pooling = False

И еще дал ссылку перечислены какие параметры driver указывать при подключении:
https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Windows

Отредактировано Port111 (Март 16, 2018 11:31:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version