Russian Qt Forum
Ноябрь 23, 2024, 04:20
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
Можно ли как-то создать драйвер qibase для PyQt4?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Можно ли как-то создать драйвер qibase для PyQt4? (Прочитано 6124 раз)
Пытон
Гость
Можно ли как-то создать драйвер qibase для PyQt4?
«
:
Февраль 12, 2017, 21:45 »
Требуется доступ к БД firebird из PyQt4, чтобы можно было быстро загружать таблицы в QSqlTableModel.
В поставке PyQt4 нет драйвера qibase!
Всё, что нахожу в интербреде - как создать этот драйвер для Qt. А мне нужен драйвер для PyQt!
Можно, конечно, использовать модуль fdb для самого питона, и написать унылую программу, уныло-медленно в цикле переносящую данные из объекта-курсора в модель. А также чудно обломаться с автоматическим занесением изменённых данных из модели обратно в БД.
-----
В общем-то, меня интересует в большей степени возможность работы PyQt4 "из коробки" с какой-нибудь БД, типа SQLite. Чтобы эта БД хранила все свои таблицы в одном файле (в любом месте на диске), чтобы её можно было спокойно скопировать. И, в отличие от трижды проклятой за это SQLite, имела бы нормальную работу с типом Decimal (числа с фиксированной дробной частью). В SQLite имеется лишь чёртов float, который никак не подходит для хранения денежных сумм.
-----
Без проблем с PyQt4 удаётся подключиться к MySQL. Но не нужен мне этот серверище. Совершенно не нужен. Базы в нём просто так не скопируешь, в любое место на диске базы не пораскидаешь.
P.S. ОС Windows 7
«
Последнее редактирование: Февраль 13, 2017, 07:45 от Пытон
»
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Можно ли как-то создать драйвер qibase для PyQt4?
«
Ответ #1 :
Февраль 13, 2017, 08:52 »
PyQt4/5 были сгенерированы из Qt какой-то утилитой (нагуглить можно), поэтому можно и на Qt сделать драйвер, если так захочется
У питона есть офигенная библиотека для работы с базами данных -- sqlalchemy
может на нее посмотреть?
Скажите, а в каком виде вы храните денежные суммы? Как используется вещественный тип? Для рублей: целая часть -- рубли, дробная -- копейки?
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Пытон
Гость
Re: Можно ли как-то создать драйвер qibase для PyQt4?
«
Ответ #2 :
Февраль 13, 2017, 11:34 »
Цитата: gil9red от Февраль 13, 2017, 08:52
PyQt4/5 были сгенерированы из Qt какой-то утилитой (нагуглить можно), поэтому можно и на Qt сделать драйвер, если так захочется
У питона есть офигенная библиотека для работы с базами данных -- sqlalchemy
может на нее посмотреть?
Скажите, а в каком виде вы храните денежные суммы? Как используется вещественный тип? Для рублей: целая часть -- рубли, дробная -- копейки?
1. SqlAlchemy разве позволяет делать GUI? Или мне её опять же с PyQt использовать, и опять же в tablemodel придётся запихивать данные, так сказать, вручную?
2. Именно так и пытался использовать. Но float для этого не подходит. Переводить всё в копейки и записывать в INTEGER тоже не вариант. В базе есть столбцы: количество, тариф, сумма. Количество тоже может быть дробным! В какие копейки я его переведу количество? Оно в копейках не измеряется.
Можно записывать данные типа Decimal в текстовые поля, но тогда придётся всё их вычисление, включая суммирование столбцов, повесить на сам Python. Вот захочешь сделать sum fieldname from mytable, а сук... скулайт тебе всё услужливо суммирует, только сама переведёт каждое из значений в чёртов float. Так что придётся делать select fieldname from mytable, и складывать (попутно переводя строки в Decimal.decimal) значения из строк курсора.
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Можно ли как-то создать драйвер qibase для PyQt4?
«
Ответ #3 :
Февраль 13, 2017, 12:11 »
1. Нет, конечно, нет. Придется вручную данные вытаскивать и с ними работать. Сначала проверьте, что он позволяет работать с нужной вам базой, а после можно и подумать как его удобно использовать в вашем проекте
2. Обычно под сумму отводится два целочисленных значения
(по крайней мере, где-то видел рекомендации, наверное на хабре)
«
Последнее редактирование: Февраль 13, 2017, 12:18 от gil9red
»
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
vic57
Чайник
Offline
Сообщений: 90
Re: Можно ли как-то создать драйвер qibase для PyQt4?
«
Ответ #4 :
Февраль 15, 2017, 08:39 »
Цитата: gil9red от Февраль 13, 2017, 12:11
2. Обычно под сумму отводится два целочисленных значения
(по крайней мере, где-то видел рекомендации, наверное на хабре)
это рубли отдельно, копейки отдельно и вычисляешь сам? если можно - поподробнее
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Можно ли как-то создать драйвер qibase для PyQt4?
«
Ответ #5 :
Февраль 15, 2017, 09:29 »
Ну, эта тема сложная и немного холиварная
Нет единного мнения на это
Кто-то использует вещественные числа с фиксированной длиной для хранения денег, но оговаривает про округление
Кто-то хранит в разменной денежной единице (например, копейки), а после делит на 100 для получения рублей
Вещественные числа не очень подходят для хранения различной валюты, ведь деньги (рубли, центы) не всегда состоят ровно из 100 разменных денежных единиц, вот тут можно увидеть это:
Список существующих валют
А
тут
и
тут
я читал обсуждение
Мое мнение -- делайте как вам будет удобно, ну и осторожно нужно работать с вещественными из-за округления
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...