FB + Python

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

FB + Python

Сообщение Solo » 03 окт 2007, 09:09

Как ни хороша Дельфи, а хочется перемен. Привлекает Питон. Хотя, возможно, это влияние моды. Никто не пробовал Питон с FB?
С MySQL там есть варианты, но... сами понимаете, бедность :?

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 05 окт 2007, 19:22

Модуль для работы с FB называется Kinterbasdb.
Уже с год работаем на Python + FB + Qt.
Кстати, из под Qt можно использовать собственно Qt-шный драйвер.

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 06 окт 2007, 14:19

Tonal писал(а):Модуль для работы с FB называется Kinterbasdb.
Уже с год работаем на Python + FB + Qt.
Кстати, из под Qt можно использовать собственно Qt-шный драйвер.
Спасибо. Нашел, скачал. Теперь насчет документашки бы какой... Про гугл знаю :D

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 08 окт 2007, 07:34

Solo писал(а):
Tonal писал(а):Спасибо. Нашел, скачал. Теперь насчет документашки бы какой... Про гугл знаю :D
Если ты про Kinterbasdb то с ним идёт вполне вменяемая дока.
Если про Qt - то очень подробный assistant

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 21 янв 2008, 09:28

Tonal писал(а):
Solo писал(а):
Tonal писал(а):Спасибо. Нашел, скачал. Теперь насчет документашки бы какой... Про гугл знаю :D
Если ты про Kinterbasdb то с ним идёт вполне вменяемая дока.
Если про Qt - то очень подробный assistant
Пробовал import kinterbasedb, кое-как с компиляцией разобрался. Все упиралось в кодировку. Пошло и банально в site.py заменил encoding ascii на cp1251 и все пошло. Скомпилировалось, пробуем подключить - есть. А вот пробуем запрос - фигу. Требует какой-то "евгеникс" для DateTime'a. А что, без него нельзя?

И еще: а QT бесплатный разве?

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 21 янв 2008, 11:46

Я надеюсь, у тебя Python 2.5? Или хотя бы 2.4?
Если да, тады открой файлик __init__.py в пакете и вместо строчки ~254

Код: Выделить всё

def init(type_conv=1, concurrency_level=_k.DEFAULT_CONCURRENCY_LEVEL):
Вставь

Код: Выделить всё

_type_conv = {3: 100, 4: 200, 5: 200}.get(sys.version_info[1], 1)
def init(type_conv=_type_conv, concurrency_level=2):
Всё должно заработать на стандартной поставке.

encoding я оставлял таким, как есть, при подключении указывал чарсет "WIN1251".
Все строковые отдаёт (кроме блобов) в unicoде, блобы - как есть.

Qt, начиная с 4-ки GPL под винду для MinGW, начиная с 4.3.2 можно использовать и MSVC и Borland (но без интеграции).
На офф. сайте свободно доступны исходники, и бинарики собранные под MinGW.

PyQt - GPL доступен в исзодниках и/или собранный под винду.
Последние дистрибутивы включают так же библиотеки Qt, ассистент, Qwt + PyQwt (графики и диограммы), QScintilla +PyScintilla (продвинутый редактор текста), Eric4 (IDE).

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 21 янв 2008, 15:10

Хм... спасибо, попробую.
В принципе, у меня блобов и нет особых... Кроме тех, которые FIB использует, ну там же все латиницей...

А без QT никак нельзя? Я как-то в Си не очень... Си после Паскаля - как французский после английского.

Какую роль QT вообще выполняет?

Я предполагал использовать Питон в роли CGI, что-то вроде этого, чтобы с базой не только из офиса работать, но и с любой машины...

Извиняюсь за наивные вопросы, все когда-то начинали.

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 27 янв 2008, 17:12

Qt у нас играет роль GUI библиотеки.
Для того, чтобы использовать её с Python-ом знать С++ не обязательно - там очень хороший биндинг (переходник).

Ну а если тебе GUI не нужен, то вполне хватит только Kinterbasedb. :-)
Если нужно простейшая работа с CGI, то она есть в стандартной поставке - модуль cgi.py.

P.S. Пройди в Интуите курс по Python-у. Там довольно хороший обзор технологий. :-)

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 14 фев 2008, 16:42

Tonal писал(а):Qt у нас играет роль GUI библиотеки.
Для того, чтобы использовать её с Python-ом знать С++ не обязательно - там очень хороший биндинг (переходник).

Ну а если тебе GUI не нужен, то вполне хватит только Kinterbasedb. :-)
Если нужно простейшая работа с CGI, то она есть в стандартной поставке - модуль cgi.py.

P.S. Пройди в Интуите курс по Python-у. Там довольно хороший обзор технологий. :-)
Я вот тож решил попробовать написать фронтэнд непосредственно под линух, поставил qt, методом научного тыка нихрена не понял, народ как будто рекомендует книженцию:
Бланшет Ж., Саммерфилд М. «Qt 4. Программирование GUI на C++»
Это то что нужно начинающему или нет? Мож подкинешь ссылок?
Может подкинешь пример исходника, если не жалко на qt что-нидь типа "select 'Hello world!' from rdb$database"?

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 14 фев 2008, 18:21


Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 15 фев 2008, 09:21

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

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 15 апр 2008, 09:54

Опять вернулся к этой теме :D
Еще накопал у немцев способ обойти UnicodeDecodeError при попытке

Код: Выделить всё

>>>import kinterbasdb
Сработало на Python 2.5.2 Windows XP
в том месте, где он спотыкается насчет UnicodeDecodeError в файле __init.py__ , в нашем случае в районе 98-й строчки, надо изменить код следующим образом:

Код: Выделить всё

            else:
                _instPath = _instPath
                # так было:
                #os.environ['PATH'] += os.pathsep + os.path.join(
                #    _instPath, 'bin'
                #  )
                # так стало:
                fs_enc = sys.getfilesystemencoding() # get the system encoding
                tempPath = os.pathsep + os.path.join( # ...firebird path + \bin
                _instPath, 'bin'
                )
                firebirdBinPath = tempPath.encode(fs_enc) # convert to system encoding string
                osPath = os.environ['PATH'].decode(fs_enc) # get and decode system path

                # set old system path + ;...firebird/bin
                os.environ['PATH'] = ((osPath + firebirdBinPath).encode(fs_enc))
                del _instPath

И тогда импорт без проблем.

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 08 июн 2008, 14:22

Итак, дело со скрипом движется. Было решено не использовать QT, Glade и т.п., т.е. обходится чисто питоновскими ингредиентами...
Причем взгляд изначально был в сторону Web-технологий. Была перерыта малюсенькая кучка англоязычной доки и принято решение использовать Pylons (не успеваешь прочесть, как дока уже устаревает), освоен HelloWorld по Pylons :oops:

Теперь вопрос: никто не использовал связку SQLAlchemy+FireBird?

Хотелось бы работающий пример подключения.

Да, и еще: морока с Unicode. Никто не пробовал перевести базу с Win1251 на Unicode? База-то рабочая, с ней работают клиенты на Delphi (FIBPlus)

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 08 июн 2008, 14:24

Вообще, никто не хочет мне сказать "развяжись с WEB-Python и купи книжку по PHP?"
Устал на каждом шагу спотыкаться. Зато сколько радости, когда работает :lol:

Ответить