Russian Qt Forum

Qt => Вопросы новичков => Тема начата: NikolajVasiljev от Сентябрь 27, 2021, 23:26



Название: Подключение к MS SQL Server (Mac, PyQt, ODBC Driver 17 for SQL Server)
Отправлено: NikolajVasiljev от Сентябрь 27, 2021, 23:26
Код
Python
# side of code
 
class MainWindow(QMainWindow):
   def __init__(self):
       super().__init__()
 
       self.con_si = QSqlDatabase.addDatabase("QODBC", "MyConnect")
       self.con_si.setHostName("**.***.**.***")
       self.con_si.setPort(****)
       self.con_si.setDatabaseName("********")
       self.con_si.setUserName('*****')
       self.con_si.setPassword('***********')
       self.con_si.open()
       if self.con_si.isOpen():
           self.label_message_import.setText('successfully')
       else:
           self.label_message_import.setText('unsuccessfully')
 
 

print(self.con_si.lastError().text())
выдает ошибку:
[iODBC][Driver Manager]dlopen(/Library/ODBC/odbc.ini, 6): no suitable image found.  Did find:
   /Library/ODBC/odbc.ini: file too short
   /Library/ODBC/odbc.ini: file too short [iODBC][Driver Manager]Specified driver could not be loaded QODBC: Unable to connect

В DatabaseName указываю DSN как в инструкции: "При подключении к источнику данных ODBC необходимо передать имя источника данных ODBC функции QSqlDatabase::setDatabaseName(), а не фактическое имя базы данных."
https://doc.qt.io/qt-5/sql-driver.html
Драйвер установил официальный с сайта Microsoft:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_NO_ENV_FILTERING=1 ACCEPT_EULA=Y brew install msodbcsql17 mssql-tools

Driver и DSN прописаны в ODBC Manager

Что еще не так?


Название: Re: Подключение к MS SQL Server (Mac, PyQt, ODBC Driver 17 for SQL Server)
Отправлено: NikolajVasiljev от Сентябрь 28, 2021, 09:23
Установил драйвер от https://www.actualtech.com//receipt.php
Изменил DSN
Соединение с MS SQL Server установлено!!!!
Но! В связи с тем, что setDatabaseName занято именем DSN, а не именем БД - как указать имя БД?


Название: Re: Подключение к MS SQL Server (Mac, PyQt, ODBC Driver 17 for SQL Server)
Отправлено: Johnik от Сентябрь 28, 2021, 12:28
примерно так у меня работало:

databaseType=QODBC
databaseHost=
databasePort=
databaseName="Driver={SQL Server};Server=_ipAddress_;Database=_databaseName_;"
databaseUserName=_userName_
databasePassword=_password_

если порт не стандартный, если память не изменяет, так он записывается: Server=_ipAddress_,_port_