Название: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 11:55 Привет.
У меня стоит Qt 5.5.1 (MSVC 2013, 32 bit) Хочу работать с Postgresql Имею ошибку QSqlDatabase: QPSQL driver not loaded Знаю что: 1) Для работы с SQLite ничего устанавливать не надо, все работает из коробки. 2) Для работы с MySQL необходимо устанавливать на компьютер базу данных MySQL + Апаче + клиент phpmyadmin для удобства просмотра Вопрос: Нужно ли что-либо устанавливать для работы с Postgresql как например для MySQL ? Или же все будет работать без установок как в случае с SQLite ? Ведь если программу писать для клиентов, то они же не будут идти на сайт базы данных и устанавливать предварительно целую базу данных. Вопрос 2: Как я понял что в Qt 5.5 драйвер не нужно собирать? он уже в коробке? Тогда почему имею ошибку : QPSQL driver not loaded Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 12:01 Тогда почему имею ошибку : QPSQL driver not loaded Привет! Не доступны библиотеки postgresql. Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 12:07 Вот мои либы для работы с базами
Где qsqlpsql.dll - это для работы с Postgresql ? (http://images.vfl.ru/ii/1481447221/02ca094d/15290429.png) Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 12:16 Я имею ввиду библиотеки самого PostgreSQL. Такие как libpq.dll например.
А qsqlpsql.dll, да это плагин для работы с PostgreSQL, но без библиотек PostgreSQL он работать не будет. PS. Проще всего на компе где пишется код, установить PostgreSQL (для тестов все равно понадобится). И прописать пути в Path до /bin и /lib PostgreSQL. Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 12:21 Я имею ввиду библиотеки самого PostgreSQL. Такие как libpq.dll например. А qsqlpsql.dll, да это плагин для работы с PostgreSQL, но без библиотек PostgreSQL он работать не будет. PS. Проще всего на компе где пишется код, установить PostgreSQL (для тестов все равно понадобится). И прописать пути в Path до /bin и /lib PostgreSQL. А если я буду запускать программу на другом компьютере, то на другом компе нет нужды устанавливать PostgreSQL? Будет достаточно держать в папке с программой либы libpq.dll и все? Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 12:25 Да. Устанавливать не надо. В папке с программой от PostgreSQL нужны libpq.dll и еще несколько библиотек.
Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 12:37 А где взять libpq.dll и другие... я установил PostgreSQL для Windows 32 разрядная.
Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 12:45 В /bin или /lib
прописать пути в Path до /bin и /lib PostgreSQL. Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 13:10 В /bin или /lib Вы имеете ввиду системную переменную PATH операционной системы Windows?прописать пути в Path до /bin и /lib PostgreSQL. Добавил C:\Program Files (x86)\PostgreSQL\9.6\bin;C:\Program Files (x86)\PostgreSQL\9.6\lib;C:\Program Files (x86)\PostgreSQL\9.6\include Ошибка осталась QSqlDatabase: QPSQL driver not loaded Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 13:28 Вы запускаете проект из MSVC?
Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 13:40 Вы запускаете проект из MSVC? ДаНазвание: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 13:46 Я с MSVC не пробовал работать. Может быть он не видит плагин qsqlpsql.dll
Попробуйте в main вывести qDebug() << QSqlDatabase::drivers(); какие драйвера видит qt? Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 13:54 Я с MSVC не пробовал работать. Может быть он не видит плагин qsqlpsql.dll Попробуйте в main вывести qDebug() << QSqlDatabase::drivers(); какие драйвера видит qt? ("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7") Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 15:45 Перегрузил компьютер ошибка более не возникла.
Но теперь появился другой вопрос. При работе с SQLite я мог сделать следующие настройки: Код Я мог указать любое имя пользователя и пароль. Теперь же используя QPostgreSQL я не могу указать любое имя и пароль, пишет "ВАЖНО: пользователь \"rudi\" не прошёл проверку подлинности (по паролю)\nQPSQL: Unable to connect Пароль проходит только при условии, что я укажу пароль который указал при установки PostgreSQL Но позвольте господа, если я сделаю программу и запущу на ином компе где не установлен PostgreSQL, что будет с паролем? Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: Пантер от Декабря 11, 2016, 15:51 1. Логин/пароль должен вводить юзер.
2. Настрой доступ с локального компа всем без пароля. 3. Постгрес это не скулайт, деплоить его немного сложнее. Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 16:15 Пароль проходит только при условии, что я укажу пароль который указал при установки PostgreSQL Для этого у PostgreSQL существуют роли. Создайте пользователей, сколько вам угодно. Но позвольте господа, если я сделаю программу и запущу на ином компе где не установлен PostgreSQL, что будет с паролем? Но где-то же у вас установлен PostgreSQL к которому будет коннектиться ваша программа. Вам для чего нужна база масштаба PostgreSQL? Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 16:28 Пароль проходит только при условии, что я укажу пароль который указал при установки PostgreSQL Для этого у PostgreSQL существуют роли. Создайте пользователей, сколько вам угодно. Но позвольте господа, если я сделаю программу и запущу на ином компе где не установлен PostgreSQL, что будет с паролем? Но где-то же у вас установлен PostgreSQL к которому будет коннектиться ваша программа. Вам для чего нужна база масштаба PostgreSQL? Пишу софт, который использует Базу данных для хранения различной технической информации, а именно что то вроде программы для раскрутки в социальной сети инстаграм. Софт должен хранить в БД список моих аккаунтов, список ID аккаунтов с которыми была работа и так далее, то есть таблиц много и каждая содержит свои данные. База должна быть локальной, а не где то на удаленном сервере. Софт будут запускать люди, у которых естественно не установлена база данных postgreSQL В начале я смотрел в сторону SQLITE, она хорошо подходит, но я бы хотел работать с БД многопоточно... и мне посоветовали для этих целей PostgreSQL Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: Пантер от Декабря 11, 2016, 16:37 Ну, смотри. Можешь юзать скулайт, но делай это однопоточно (хотя, проверь, тут говорили, что многопоточка тоже работает). А можно юзать постгрес, но тогда включай его в инсталлятор и правильно устанавливай/настраивай на локальной машине.
Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 11, 2016, 16:44 Ну, смотри. Можешь юзать скулайт, но делай это однопоточно (хотя, проверь, тут говорили, что многопоточка тоже работает). А можно юзать постгрес, но тогда включай его в инсталлятор и правильно устанавливай/настраивай на локальной машине. Иными словами ПОСТГРЕС обязательно должен быть установлен локально на компьютере того человека что использует софт. И для этого следует засунуть его в инсталятор. Жесть... я думал нет нужды... думал можно как с SQLite без установки Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: Пантер от Декабря 11, 2016, 16:49 Нет, его без установки нельзя. Если тебе нужно простота деплоя, то скулайт или вообще ini файл или самописная БД.
Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: PimenS от Декабря 11, 2016, 17:49 Иными словами ПОСТГРЕС обязательно должен быть установлен локально на компьютере того человека что использует софт. И для этого следует засунуть его в инсталятор. Жесть... я думал нет нужды... думал можно как с SQLite без установки Не нужно на каждой машине использующей программу устанавливать PostgreSQL. Установи его на одном компьютере в локальной сети. И все пользователи будут работать с этой базой. ЗЫ. Тогда и с многопоточностью проблем не возникает, если есть сложные расчеты, запросы. Цитировать База должна быть локальной, а не где то на удаленном сервере. Если следовать этому условию, то конечно, чтобы на компьютере была база, придется ее туда установить. Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: sergek от Декабря 11, 2016, 20:15 База должна быть локальной, а не где то на удаленном сервере. Довольно странные требования - база локальная, но софт запускать будут разные пользователи. Поясните, как это можно организовать.Софт будут запускать люди, у которых естественно не установлена база данных postgreSQL В начале я смотрел в сторону SQLITE, она хорошо подходит, но я бы хотел работать с БД многопоточно... и мне посоветовали для этих целей PostgreSQL Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 12, 2016, 15:37 База должна быть локальной, а не где то на удаленном сервере. Довольно странные требования - база локальная, но софт запускать будут разные пользователи. Поясните, как это можно организовать.Софт будут запускать люди, у которых естественно не установлена база данных postgreSQL В начале я смотрел в сторону SQLITE, она хорошо подходит, но я бы хотел работать с БД многопоточно... и мне посоветовали для этих целей PostgreSQL Что тут странного? Допустим вы спамер, вы решили купить программу которая спамит например по сайту вконтакте. Сегодня вы сделали спам по 1000 человекам, а завтра снова будете спамить... и вы же не хотите спамить одних и тех же людей 2 раза? Значит нужно где то хранить базу тех кого мы проспамили... а где хранить? Конечно же в базе локально на вашем компе... где же еще? Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: sergek от Декабря 12, 2016, 17:16 Значит нужно где то хранить базу тех кого мы проспамили... а где хранить? Конечно же в базе локально на вашем компе... где же еще? А нафига тут несколько потоков с доступом к БД? Что б было?Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 12, 2016, 17:19 Значит нужно где то хранить базу тех кого мы проспамили... а где хранить? Конечно же в базе локально на вашем компе... где же еще? А нафига тут несколько потоков с доступом к БД? Что б было?то работать с БД в 1 поток? типа каждый поток кидает сигнал потоку - который работает с БД? или же проще каждый рабочий поток подключить в БД отдельно Я может чего то не улавливаю конечно... поправьте меня если можете Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: Пантер от Декабря 12, 2016, 18:52 В один поток. У тебя постоянные обращения к БД? Обычно выбирают данные и дальше с ними работают.
Название: Re: Postgresql + Qt 5.5 (как с ней работать) Отправлено: rudireg от Декабря 12, 2016, 18:59 В один поток. У тебя постоянные обращения к БД? Обычно выбирают данные и дальше с ними работают. да постоянное обращение к данным... запись в лог... идет в БД, а так же каждая операция делает предварительную проверку в БД.Например... стоит задача от имени 100 анкет сделать лайки... и нужно что бы не было повторных лайков... вдруг вчера или неделю назад мы уже лайкали какого то юзера... п потому перед каждым лайком в БД проверяется делали ли ранее лайк текущему юзеру.... ну в принципе можно вынести работу с БД в отдельный поток и общаться посредством сигналов и слотов... тогда запросы будут в очереди... низнаю насколько это будет тормозить процесс, и будет ли вообще тормозить его. |