Russian Qt Forum
Август 22, 2017, 04:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можно ли как-то создать драйвер qibase для PyQt4?  (Прочитано 838 раз)
Пытон
Самовар
**
Offline Offline

Сообщений: 154


Просмотр профиля
« : Февраль 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
Neo
*****
Offline Offline

Сообщений: 1784



Просмотр профиля WWW
« Ответ #1 : Февраль 13, 2017, 08:52 »

PyQt4/5 были сгенерированы из Qt какой-то утилитой (нагуглить можно), поэтому можно и на Qt сделать драйвер, если так захочется

У питона есть офигенная библиотека для работы с базами данных -- sqlalchemy
может на нее посмотреть?

Скажите, а в каком виде вы храните денежные суммы? Как используется вещественный тип? Для рублей: целая часть -- рубли, дробная -- копейки?
Записан

Пытон
Самовар
**
Offline Offline

Сообщений: 154


Просмотр профиля
« Ответ #2 : Февраль 13, 2017, 11:34 »

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
Neo
*****
Offline Offline

Сообщений: 1784



Просмотр профиля WWW
« Ответ #3 : Февраль 13, 2017, 12:11 »

1. Нет, конечно, нет. Придется вручную данные вытаскивать и с ними работать. Сначала проверьте, что он позволяет работать с нужной вам базой, а после можно и подумать как его удобно использовать в вашем проекте
2. Обычно под сумму отводится два целочисленных значения Улыбающийся (по крайней мере, где-то видел рекомендации, наверное на хабре)
« Последнее редактирование: Февраль 13, 2017, 12:18 от gil9red » Записан

vic57
Новичок

Offline Offline

Сообщений: 23


Просмотр профиля
« Ответ #4 : Февраль 15, 2017, 08:39 »

2. Обычно под сумму отводится два целочисленных значения Улыбающийся (по крайней мере, где-то видел рекомендации, наверное на хабре)
это рубли отдельно, копейки отдельно и вычисляешь сам? если можно - поподробнее
Записан
gil9red
Administrator
Neo
*****
Offline Offline

Сообщений: 1784



Просмотр профиля WWW
« Ответ #5 : Февраль 15, 2017, 09:29 »

Ну, эта тема сложная и немного холиварная Улыбающийся

Нет единного мнения на это
Кто-то использует вещественные числа с фиксированной длиной для хранения денег, но оговаривает про округление
Кто-то хранит в разменной денежной единице (например, копейки), а после делит на 100 для получения рублей

Вещественные числа не очень подходят для хранения различной валюты, ведь деньги (рубли, центы) не всегда состоят ровно из 100 разменных денежных единиц, вот тут можно увидеть это: Список существующих валют

А тут и тут я читал обсуждение


Мое мнение -- делайте как вам будет удобно, ну и осторожно нужно работать с вещественными из-за округления
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.05 секунд. Запросов: 22.