Sqlalchemy + pymssql подключиться не удается, уровень начинающего, я боюсь - PullRequest
0 голосов
/ 28 августа 2018

Я решил расширить свои знания и начать использовать python для реальных вещей (программируя десятки лет на других языках). Поскольку мы используем Microsoft SQL Server в качестве основной базы данных, важно иметь возможность подключаться к нему. С того же сервера у меня нет проблем с подключением к PHP, поэтому не должно быть никаких сетевых ограничений.

У меня есть файл freetds.conf с подключением dbserver к серверу базы данных (который я обычно использую для PHP), сервер находится на отдельном сервере в нашей собственной сети.

Просто чтобы проверить соединение, у меня есть небольшая программа:

    from sqlalchemy import create_engine
    from sqlalchemy.orm import scoped_session, sessionmaker

    engine = create_engine(r"mssql+pymssql://{0}:{1}@dbserver/db_database?charset=utf8".format('user','p@ssw0rd'))

    def main():
        print("In main")
        connection=engine.connect()
        print("Connected")

if __name__ == "__main__":
    main()

Программа печатает в основном, но никогда не попадает в Connected. На самом деле я задаю два вопроса: «Как отладить такого рода проблемы» и / или «Есть идеи, что может вызвать это»? Конечно, если я делаю что-то совершенно тупое, я был бы признателен, если бы вы тоже это указали ...

Я запускаю это с Python 3.6.

WBR

моток

1 Ответ

0 голосов
/ 28 августа 2018

Я все-таки нашел ошибку. Проблема заключалась в том, что на SQL-сервере я использую экземпляр. Хотя в файле freetds.conf упоминается порт экземпляра, мне также пришлось добавить его в вызов create_engine.

Рабочая версия create_engine такова:

engine = create_engine(r"mssql+pymssql://{0}:{1}@dbserver:12345/db_database?charset=utf8".format('user','p@ssw0rd'))

, где 12345 - номер порта, который слушает экземпляр.

Я сожалею, что пропустил этот важный бит информации, но, опять же, если бы я это понял, я бы, наверное, даже не спросил - а потом кто-нибудь другой мог бы позже бороться с той же проблемой.

моток

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...