powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подключение Python(PyQt5->QtSql) к базе данных MS SQL для записи данных
4 сообщений из 4, страница 1 из 1
Подключение Python(PyQt5->QtSql) к базе данных MS SQL для записи данных
    #39942275
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Не получается подключить MS SQL к Python, для записи в первый данных, через программу, которая пишется инструментами Python и связанными с ним.

Что сделано:

1) на Qt Desinger отрисован интерфейс, в котором создано элемента QLineEdit, через которые и планируется вставлять данные в MS SQL
2) в среде разработки Thonny, я установил и импортировал библиотеку PyQt5, и пишу код, привязываю функции к кнопкам, чекбоксам и т.д. с интерфейсом от Qt Desinger.
3) для работы с базами данных в библиотеке PyQt5 есть модуль QtSql, который я так же импортирую.
4) предварительно в MS SQL создал базу данных, присвоил имя.
5) чтобы подключиться к MS-SQL пользуюсь мануалом http://doc.crossplatform.ru/qt/4.5.0/qtsql.html#connecting-to-databases , где шаг по шагу все описано.
6) в Qt Creator создаю файл main.cpp , все согласно мануала - пункт 5, в котором содержится следующий код и создаю подключение, в итоге постоянно получаю ошибку, которая прописана в qDebug(), т.е. мне не удается наладить подключение:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
#include <QCoreApplication>
#include <QDebug>
#include <QtSql>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
   
 qDebug()<<"start";

    QSqlDatabase db;
    db = QSqlDatabase::addDatabase("QODBC"); //QODBC - согласно мануалу это драйвер для MS SQL
    db.setHostName("LNV");
    db.setDatabaseName("Pstatus");
    db.setUserName("www");
    db.setPassword("xxx");
    db.open();
    
    qDebug()<<"end";

    if(!db.open())
    {
        qDebug()<<"problem opening database";
    }

    return a.exec();
}



В корневую папку, в которой хранятся все необходимые файлы с помощью Qt Creator ->Kits были успешно созданы те самые файлы о которых говорится в мануале db.pro (в файл для линкования добавлен QT += sql), main.cpp

- Буду благодарен за подсказку/помощь и так сказать troubleshooting.
- Что делаю не так?
- Какую еще предоставить информацию?
- В случае если МS SQL установлен просто на ПК и нет имени хоста, логина и пароля, то: db.setHostName("LNV"), db.setUserName("www"), db.setPassword("xxx") получается прописывать не нужно?
- Возможно у кого-то есть простое готовое решение по типу записи данных в БД MS SQL, которое могло бы послужить примером для анализа?!
...
Рейтинг: 0 / 0
Подключение Python(PyQt5->QtSql) к базе данных MS SQL для записи данных
    #39942635
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Открываешь ODBC Administrator, это такая системная утилита в виндах, и там создаешь DSN в котором прописываешь все-все параметры подключения. Там этих параметров много...
2. В Qt, в setHostName() указываешь имя свежесозданного DSN. Всё.

3. Если в DSN уже указана база данных - можно setDatabase() не использовать. Тоже самое про юзера и пароль.
4. Если пункт 1 лень делать (ну или злобный админ не пущает), то в setHostName() передаешь полную строку подключения ODBC. За подробностями иди в MSDN, в описание функции SQLDriverConnect()
...
Рейтинг: 0 / 0
Подключение Python(PyQt5->QtSql) к базе данных MS SQL для записи данных
    #39942865
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
1. Открываешь ODBC Administrator, это такая системная утилита в виндах, и там создаешь DSN в котором прописываешь все-все параметры подключения. Там этих параметров много...
2. В Qt, в setHostName() указываешь имя свежесозданного DSN. Всё.

3. Если в DSN уже указана база данных - можно setDatabase() не использовать. Тоже самое про юзера и пароль.
4. Если пункт 1 лень делать (ну или злобный админ не пущает), то в setHostName() передаешь полную строку подключения ODBC. За подробностями иди в MSDN, в описание функции SQLDriverConnect()


Спасибо, заработало, но очень много лишних движений. В следующем сообщении, напишу как без qmake файла также подключился к БД.
...
Рейтинг: 0 / 0
Подключение Python(PyQt5->QtSql) к базе данных MS SQL для записи данных
    #39942871
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому пригодиться?!

Очень долго искал альтернативный путь, написанному в данном запросе, т.к. уже заведомо понимал, что может быть проще. Вся проблема была в драйвере от МS SQL, его правильном имени, чтобы записать в код. Ниже предоставляю сам код из Python:

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
from PyQt5 import QtSql
from PyQt5.QtSql import *
from PyQt5 import QtCore, QtGui, QtWidgets
import sys

db = QtSql.QSqlDatabase.addDatabase('QODBC')
db.setDatabaseName('DRIVER={SQL Server Native Client 11.0};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s;'
                    % ('S',
                       'D',
                       'w',
                       'x'))
if db.open():
    print("--------------------->open DB success.")
else:
    print("Error")
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подключение Python(PyQt5->QtSql) к базе данных MS SQL для записи данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]