Страница 1 из 1

FB + Python

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

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

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

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

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

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

Добавлено: 21 янв 2008, 11:46
Tonal
Я надеюсь, у тебя 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).

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 14 фев 2008, 18:21
Tonal

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

Добавлено: 15 апр 2008, 09:54
Solo
Опять вернулся к этой теме :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

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

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

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

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

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

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