Невозможно подключиться к SQL Server, используя FreeTDS и ODBC (raspberry pi raspbian) - PullRequest
0 голосов
/ 22 ноября 2018

Используя Raspberry Pi с Raspbian 9, я пытаюсь подключиться к базе данных SQL Azure, используя ODBC (pip установил ее из оболочки) с FreeTDS (версия 108)

До сих пор у меня естьпопробовал следующее:

В /etc/odbcinst.ini:

[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/odbc/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so

В моем /etc/odbc.ini

[name]
 Driver=FreeTDS
 ServerName = {MyServerString from Azure MS-SQL}
 Database = {My database name from Azure MSQ-SQL}
 TDS_Version = auto

В файле FreeTDS.config:

Создан этот блок:

[name]
 host = {MyServerString from Azure MSQ SQL}
 port = 1433
 tds version = auto

Когда я запускаю следующую команду:

tsql -S {name} -U {my_username} -P {my_password}

Я получаю результат

No errors ( 1> )

Поэтому я считаю, что я подключен кбазы данных.

Однако, когда я запускаю свой код Python.Я получаю ошибку.Мой блок подключения к базе данных ниже

#Database setup
conDEBUG = "DRIVER={FreeTDS};Database={MyDGName};SERVER=tcp:{MyDB}.database.windows.net;UID={myUID};PWD={myPWD}"
conDEBUG = urllib.parse.quote_plus(conDEBUG)
conDEBUG = "mssql+pyodbc:///?odbc_connect=%s" % conDEBUG
app.config['SQLALCHEMY_DATABASE_URI'] = conDEBUG
db = SQLAlchemy(app)

Я также пытался добавить 'TDS_Version = auto' в строку conDEBUG, это тоже не сработало.

Конкретная ошибка, которую я получаю:

('08001', '[08001] [unixODBC] [FreeTDS] [SQL Server] Невозможно подключиться к источнику данных (0) (SQLDriverConnect)')

1 Ответ

0 голосов
/ 23 ноября 2018

Вот функция, которую я использую для подключения через SQLAlchemy к SQL Server через pyodbc:

def mssql_connect(con_string): 
    """ Connects to the specified db via ODBC. """
    def connect():
        return pyodbc.connect(con_string, autocommit=True)

    db = create_engine('mssql://', creator=connect, encoding='cp1252')
    db.echo = False

    return db

mssql_connect("DRIVER={FreeTDS};SERVER={MyDB}.database.windows.net;PORT=1433;DATABASE={dbname};UID={myUID};PWD={myPWD};TDS_Version=7.3;")

В зависимости от вашей версии FreeTDS вам, возможно, придется заменить TDS_Version=7.3 на TDS_Version=7.2 или TDS_Version=7.1.Удачи!

...