| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > Как работают с базами данных в Python? |
| Автор: Дмитрий Т 24.6.2006, 09:44 |
| Пролистав пару книг по питону у меня сложилось впечатление, что с базами данных его удобно использовать только если писать для www, а вот создать для баз данных красивое GUI приложение под windows или linux будет нетривиальной задачей (хотел показывать через wxPython). Надо будет вручную раскладывать информацию, получаемую из базы, в визуальные компоненты... Существуют ли какие-нибудь компоненты позволяющие быстро создавать пользовательский интерфейс для работы с sql базами данных? В первую очередь интересует MySQL. Хочется систему компонентов аналогичную имеющейся в Borland Delphi и C++ Builder. Есть что-нибудь близкое или как вообще решают такую задачу? |
| Автор: pythonwin 24.6.2006, 11:34 |
| Это можно: SQLObject+wxPython |
| Автор: J2A 25.6.2006, 07:08 |
| Напр. в PyQt3 есть модуль qtsql. Насчет PyQt4 не в курсе. |
| Автор: Дмитрий Т 26.6.2006, 20:23 | ||
Если правильно понял, то полученные данные сами собой на экране не будут обновлятся. Так? |
| Автор: slav0nic 27.6.2006, 16:09 |
| Дмитрий Т, в каком плане? как напишете так и будет работать) идите дочитывайте книги %) |
| Автор: Дмитрий Т 27.6.2006, 18:10 | ||
Если бы вы попробовали Borland Delphi или их C++ Builder для работы с MySQL, Oracle, firebird и т.п., то сразу бы поняли о чём речь Чтоб заработал не сложный, но и не совсем бестолковый пример в них достаточно написать SQL и больше никакого программирования! Притом без потерь качества, просто за счёт проработанной системы компонентов ориентированных на БД. Но мне хочется более удобной кросплатформенности, а их kylix это что-то... |
| Автор: J2A 28.6.2006, 05:45 |
| Дмитрий Т, в wx такого нет. http://forum.vingrad.ru/index.php?showtopic=101687&view=findpost&p=772854 Если не привязан к wx, делай на Qt; если привязан -- таки да, в ручную. |
| Автор: diam 28.6.2006, 20:58 | ||
| Гхм... Работа с СУБД никак не связана с интерфейсом, будь то GUI или нечто, рисующее веб-морду. Если нужен пример работы с какой-либо БД, можно посмотреть на http://python.org/pypi/pyPgSQL/2.5, имплементирующая DB API2.0 для PostgreSQL (потому как недавно с ней работал Вот пример работы:
|
| Автор: Дмитрий Т 29.6.2006, 05:25 | ||
Э-э, дружище не скажите... Разница не малая между "GUI или нечто, рисующее веб-морду". Вам нужно увидеть программу-картотеку, допустим книг, с базой на миллион записей... GUI таблица (сетка), к примеру, должна позволять перемещаться по базе, сортировать и редактировать, но при этом не загружать весь миллион в память. И это не единственная особенность. |
| Автор: pythonwin 29.6.2006, 10:53 | ||
| предлагаю использовать - SQLObject+wxPython. при этом не придется писать код подобный . Аналог
надеюсь раздница чувствуется |
| Автор: Дмитрий Т 29.6.2006, 15:14 | ||||
Не спорю, как раз и хотел узнать, а есть ли наработки в питоне на мою специфику. Насколько понял - только в qt, но меня отталкивает их политика с лицензиями. |
| Автор: Berliner 29.6.2006, 17:27 |
| Мне бы хотелось увидеть пример подключения к базе Syabse ASA 5.0.5 или ASE 12.0 и выборки данных через ODBC пожалуста напишите пример плиз |
| Автор: diam 29.6.2006, 21:57 | ||
pythonwin, тогда разберём несколько примеров, что бы сразу же всё было ясно Примеры сильно утрирую. Дабы было понятнее. В реальной жизни структура несколько сложнее Пример 1. Есть три таблицы.
Если что-то непонятно в структуре таблиц (в логике), спрашивайте, объясню. Задача. Предоставить информацию в виде таблицы (наименование валюты, курс) на момент времени t1 ('01.04.2006 02:30:00'), отсортированную по наименованию валюты, при этом выбирать только ту валюту, операции с которой на момент времени t1 были разрешены. Прошу предоставить решение, использующее: Своё решение покажу позже. |
| Автор: Berliner 3.7.2006, 14:14 |
| Хотелось бы решение |
| Автор: diam 3.7.2006, 18:24 |
| Сначала ждёмс решения от pythonwin, использующее: |
| Автор: dvska 5.7.2006, 17:50 | ||||
|
| Автор: pythonwin 13.7.2006, 13:41 | ||||
| Уважаемый ,diam, - специально для Вас! создаем БД
Запускаем код
Добавлено @ 13:43 PS. Пример для PostgreSQL |
| Автор: pythonwin 13.7.2006, 14:20 |
| Вот ещё (правда не моё, но бесплатное) - |
| Автор: diam 13.7.2006, 23:33 | ||
pythonwin, можно на ты? На форуме дружественная обстановка, и мы вроде как не ненавидим друг друга. Поэтому зачем такие слова: "Уважаемый ,diam, - специально для Вас!". Даже обидно немного. pythonwin, погоди, ты не до конца доделал
Напиши решение, я позже прокомментирую. |
| Автор: pythonwin 14.7.2006, 07:11 |
Можно и на ты |
| Автор: pythonwin 14.7.2006, 07:55 |
| diam, посмотри http://python.org/pypi/PythonCard/0.8.1 - рисуется довольно легко. советую PythonCard 0.8.2 |
| Автор: pythonwin 14.7.2006, 11:33 | ||
| пример использования таблицы можно посмотреть http://mail.python.org/pipermail/tutor/2003-April/021851.html немного поправил, чтобы тебе, diam, было легче:
|
| Автор: pythonwin 14.7.2006, 11:51 | ||||
diam, а вот и SELECT
Вот эту часть задания плохо понял, - пожалуйста, diam, привети пример в SQL. |
| Автор: pythonwin 14.7.2006, 12:30 | ||
Вот ещё пример:
|
| Автор: J2A 14.7.2006, 16:21 | ||||
pythonwin, ты в wx используешь устаревший синтаксис. Сейчас акутально разделять пространства имен, т.е. не
а
|
| Автор: pythonwin 14.7.2006, 18:02 |
| А у меня новый ошибками ругается |
| Автор: Berliner 20.7.2006, 19:35 | ||
Спасиб за код.
выполнил вылазит ошибка -Подскажите пожалуста, че импорт не может сделать? import mx.ODBC.Windows as odbc ImportError: No module named mx.ODBC.Windows |
| Автор: dvska 20.7.2006, 20:44 | ||
![]()
Потому что в стандартной поставке питона нет модуля для работы с ODBC. Его надо скачать и поставить. Я использовал коммерческий модуль http://www.egenix.com/files/python/mxODBC.html. Можно также взять бесплатный вариант из поставки pyWin32 http://www.python.net/crew/mhammond/win32/Downloads.html . ![]() |
| Автор: pythonwin 21.7.2006, 07:19 |
| diam, пожалуйста, покажи решение... |
| Автор: Berliner 21.7.2006, 16:58 | ||
спасиб, скачал exe файл. или просто надо проинсталить? или что-то кудато подключать? |
| Автор: pythonwin 21.7.2006, 17:15 | ||
Инсталировать. |
| Автор: Berliner 21.7.2006, 20:47 |
| Заинсталил и пишет не найдена imort.ODBC......... Может по другому надо подключить библиотеку? В хелпе примеров по подключению библиотеки не нашел. |
| Автор: diam 22.7.2006, 00:10 | ||||||||
Господа, прошу меня извинить. Я неправильно описал структуру таблиц, во второй и третьей таблице не хватает одного поля, которое увяжет каждую из них с первой таблицей. Поэтому структура такова:
Ещё раз прошу меня простить. Теперь продолжим.
Решение. Сразу же скажу, что я стараюсь отделять запросы SQL от кода, то есть запросы находятся в отдельном модуле и являются пронумерованными. Цель: отделить SQL-код от кода основной программы, тем самым упрощается просмотр кода основной программы, и устранять ошибки становится намного проще. Так, у большого приложения может быть много разных запросов (больше тысячи), но при этом нет никакого бардака. Поэтому у меня создано два файла: pgqueries.py и solution.py, в первом, соответственно, запросы, во втором - код, который забирает результаты из базы и выводит их. pgqueries.py
solution.py
Сразу по ходу замечания: я не рассматриваю вопросы вывода полученного результата, не рассматриваю вопросы написания какого-нибудь API, поскольку какой-либо специфики нет по причине простоты задачи. А усложнить всегда успеем Код не коментирую по причине простоты и небольшого размера, немного прокоментировал лишь запрос. Вопросы производительности. Ещё не тестировал, напишу позже. |
| Автор: Berliner 24.7.2006, 10:53 |
| Заинсталил и пишет не найдена import.ODBC.Windows as odbc Может по другому надо подключить библиотеку? В хелпе примеров по подключению библиотеки не нашел. Прописываю это в интерактивном модуле pythonWindows. Интересно что когда пишу import. (ставлю точку то подсвечивается подсказка ODBC)- значит, библиотека всетаки есть? А почему пишет что ее нет? |
| Автор: pythonwin 24.7.2006, 13:00 |
| Berliner, пожалуйста, приведи пример кода. |
| Автор: Berliner 24.7.2006, 13:12 | ||
|
| Автор: pythonwin 24.7.2006, 13:33 |
У меня тоже ошибка. Ты откуда этот кусок кода взял? |
| Автор: dvska 24.7.2006, 15:32 | ||||
Я приводил пример для поставки MX, а не PythonWin; тебе нужно просто
|
| Автор: pythonwin 24.7.2006, 16:22 |
| dvska, у меня всё равно говорит, что нет такого модуля |
| Автор: diam 25.7.2006, 10:05 |
| Кстати, pythonwin, напиши решение с SQLObject. Я его тоже на производительность потестю, потом результаты выложу. |
| Автор: pythonwin 25.7.2006, 11:10 | ||
Хорошо... Но не сегодня - есть проблемы со временем. |
| Автор: cherep 26.7.2006, 21:19 |
| Сам то я не видел Добавлено @ 21:21 упс.. запостил раньше времени даже натыкался на обсуждения, там убеждают, что круче многократно, чем SQLObject. Сам утверждать не могу, т.к. не пробовал ни то ни другое... но может стоит тоже глянуть |
| Автор: pythonwin 27.7.2006, 07:01 |
| cherep, я тоже это слышал и читал про это, но сам sqlalchemy не использовал, и поэтому пока советую "старенький" SQLObject Добавлено @ 07:07 найду время - обязательно разберусь с sqlalchemy. |
| Автор: Berliner 31.7.2006, 15:20 | ||||
Спасиб -импорт делает. Но далее
вываливает ошибку. типа ненайден conn или отсутсвует метод. ругается на вторую строку- думаю что чарез pythonwin расшерение надо по другому прописывать коннект подскажите как сделать выборку из базы. В pythonwin документации ничего толкового не нашел. Подскажите плиз. |
| Автор: dvska 31.7.2006, 15:58 |
| Berliner, в C:\python24\Lib\site-packages\PyWin32.chm всё есть |
| Автор: Berliner 1.8.2006, 11:03 |
| Хм там проство описаны свойства odbc connect и другие. А примера нет. Мне по примерама лучше разбираться. |