Подключение к серверу SQL с помощью Pyodbc & SQLAlchemy - PullRequest
0 голосов
/ 13 декабря 2018

Вот некоторая предыстория того, что я пытаюсь выполнить: моя работа создала приложение, которое хранит информацию в базе данных SQL для каждой работы, над которой мы работаем.Я пытаюсь автоматизировать некоторые процессы нашего рабочего процесса, используя python, но мне бы хотелось иметь доступ к информации в базе данных.

Насколько я понимаю, для этого мне нужно подключить базу данных к SQLсервер.Я пытаюсь сделать это с помощью SQLAlchemy и pyodbc.В качестве части приложения у меня есть Microsoft SQL Server 2008 R2 и собственный клиент SQL Server 10.0 в качестве драйвера.

Проблема в том, что я не могу подключиться к серверу SQL с помощью SQLAlchemy или pyodbc с помощью create_engine ()или методы connect ().Ниже я попробовал несколько разных способов:

1) Использование DSN: мне не удалось создать системный или пользовательский DSN, так как я получил бы это сообщение об ошибке Ошибка

2) использование SQLAlchemy и соединение с именем хоста:

engine = sqlalchemy.create_engine("mssql+pyodbc://user:password@.\DT_SQLEXPR2008/C:\SQLTest\JobDB.mdf?driver=SQL+Server+Native+Client+10.0")
engine.connect()

3) использование SQLAlchemy и аутентификация windows:

engine = sqlalchemy.create_engine('mssql+pyodbc://DT_SQLEXPR2008/C:\SQLTest\JobDB.mdf?driver=SQL+Server+Native+Client+10.0')
engine.connect()

4) использование метода pyodbc connect ():

conn = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=.\DT_SQLEXPR2008;DATABASE=C:\SQLTest\JobDB.mdf;UID=user;PWD=password')

В вышеупомянутом я ввел свое имя пользователя Windows и пароль вместо "пользователя" и "пароля". Здесь - изображение конфигурации SQL.менеджер, показывающий существующий сервер SQL и моего пользователя, с которым я вошел в систему.

Я попытался установить сервер как. \ DT_SQLEXPR2008, а также 'имя_компьютера' \ DT_SQLEXPR2008

Каждый раз, когда я получаю это сообщение об ошибке:

InterfaceError: (pyodbc.InterfaceError) ('28000', "[28000] [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Ошибка входа в систему для пользователя 'z003vrzk'. (18456) (SQLDriverConnect); [28000] [Microsoft] [SQLСобственный клиент сервера 10.0] [SQL Server] Ошибка входа для пользователя 'z003vrzk'. (18456) ") (Справочная информация об этой ошибке: http://sqlalche.me/e/rvf5)

Может кто-нибудь сказать мне, как добавить базу данныхна сервер SQL и прочитать информацию, которую он содержит?

1 Ответ

0 голосов
/ 19 декабря 2018

Это будет избыточно для пользователей SQL, но я не видел ответа на этот вопрос с помощью python + pyodbc.

Сначала мне нужно было подключиться к базе данных master, находящейся на экземпляре сервера SQL на моем компьютере:

connMaster = pyodbc.connect('DRIVER={SQL Server Native Client 10.0}; 
SERVER=.\DT_SQLEXPR2008;DATABASE=master;Trusted_Connection=yes;')
cursorMaster = connMaster.cursor()

DT_SQLEXPR2008 - это имя экземпляра сервера SQL, master - это имя базы данных, и я подключаюсь с помощью проверки подлинности Windows.

Далее мне нужно присоединить базу данных, находящуюся в пути: C: \ Path \ To \ SQL \ JobDB.mdf:

    sql1 = "CREATE DATABASE PBJobDB"
    sql2 = "ON (Filename = '{pathMDF}'), (Filename = '{pathLDF}')".format(pathMDF = pathMDF, pathLDF = pathLDF)
    sql3 = "FOR Attach"
    sql = sql1 + " " + sql2 + " " + sql3
    print(sql)
    connMaster.autocommit = True
    cursorMaster.execute(sql)
    connMaster.autocommit = False

PathMDF и PathLDF являются именами путей к файлу основных данных и файлу журнала.

Если вы хотите подключиться кбазы данных в сетевом расположении, нам понадобится TRACEON 1807 (пока это не получилось).

...