Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как работают с базами данных в Python? wxPython, MySQL 
V
    Опции темы
Дмитрий Т
Дата 24.6.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Пролистав пару книг по питону у меня сложилось впечатление, 
что с базами данных его удобно использовать только если писать для www, 
а вот создать для баз данных красивое GUI приложение под windows или linux 
будет нетривиальной задачей (хотел показывать через wxPython). 
Надо будет вручную раскладывать информацию, получаемую из базы, 
в визуальные компоненты...

Существуют ли какие-нибудь компоненты позволяющие быстро создавать 
пользовательский интерфейс для работы с sql базами данных? 
В первую очередь интересует MySQL.
Хочется систему компонентов аналогичную имеющейся в Borland Delphi и C++ Builder.
Есть что-нибудь близкое или как вообще решают такую задачу? 
PM MAIL WWW ICQ Skype   Вверх
pythonwin
Дата 24.6.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Это можно: SQLObject+wxPython 
PM WWW GTalk Jabber   Вверх
J2A
Дата 25.6.2006, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 17.11.2005
Где: Омск

Репутация: 16
Всего: 18



Напр. в PyQt3 есть модуль qtsql. Насчет PyQt4 не в курсе. 
--------------------
Be easy, stay cool
PM MAIL WWW Jabber   Вверх
Дмитрий Т
Дата 26.6.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Цитата(pythonwin @ 24.6.2006,  12:34)
Это можно: SQLObject+wxPython

Если правильно понял, то полученные данные сами собой на экране не будут обновлятся. Так? 
PM MAIL WWW ICQ Skype   Вверх
slav0nic
Дата 27.6.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.5.2006

Репутация: 4
Всего: 5



Дмитрий Т, в каком плане? как напишете так и будет работать)
идите дочитывайте книги %) 
--------------------
                                 python.com.ua 
PM MAIL WWW Jabber   Вверх
Дмитрий Т
Дата 27.6.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Цитата(slav0nic @ 27.6.2006,  17:09)
Дмитрий Т, в каком плане? как напишете так и будет работать)
идите дочитывайте книги %)

Если бы вы попробовали Borland Delphi или их C++ Builder для работы с MySQL, Oracle, firebird и т.п., 
то сразу бы поняли о чём речь smile
Чтоб заработал не сложный, но и не совсем бестолковый пример в них достаточно написать SQL и 
больше никакого программирования! Притом без потерь качества, 
просто за счёт проработанной системы компонентов ориентированных на БД.
Но мне хочется более удобной кросплатформенности, а их kylix это что-то... 
PM MAIL WWW ICQ Skype   Вверх
J2A
Дата 28.6.2006, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 17.11.2005
Где: Омск

Репутация: 16
Всего: 18



Дмитрий Т, в wx такого нет. В Qt есть. Если не привязан к wx, делай на Qt; если привязан -- таки да, в ручную. 
--------------------
Be easy, stay cool
PM MAIL WWW Jabber   Вверх
diam
Дата 28.6.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 3
Всего: 16



Гхм... Работа с СУБД никак не связана с интерфейсом, будь то GUI или нечто, рисующее веб-морду.

Если нужен пример работы с какой-либо БД, можно посмотреть на pyPgSQL, имплементирующая DB API2.0 для PostgreSQL (потому как недавно с ней работал smile ).

Вот пример работы:
Код

from pyPgSQL import PgSQL

pgconn = PgSQL.connect(host = 'dbhost', database = 'dbname', user = 'dbuser', password = 'dbpassword')
pgcurs = pgconn.cursor()

pgcurs.execute("SELECT * FROM my_lovean_table")
allrows = pgcurs.fetchall()

pgconn.commit()
pgconn.close()

# наш результат
print allrows
 
PM MAIL   Вверх
Дмитрий Т
Дата 29.6.2006, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Цитата(diam @ 28.6.2006,  21:58)
Гхм... Работа с СУБД никак не связана с интерфейсом, будь то GUI или нечто, рисующее веб-морду.

Э-э, дружище не скажите...
Разница не малая между "GUI или нечто, рисующее веб-морду".
Вам нужно увидеть программу-картотеку, допустим книг, с базой на миллион записей...
GUI таблица (сетка), к примеру, должна позволять перемещаться по базе, сортировать и редактировать, 
но при этом не загружать весь миллион в память. И это не единственная особенность. 
PM MAIL WWW ICQ Skype   Вверх
diam
Дата 29.6.2006, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 3
Всего: 16



Работа с СУБД заключается в следующем:
1. Построение запроса.
2. Выполнение запроса.
3(опционально). Получение результатов запроса.

Выполнение этих трёх процедур специфично для разных задач, и это естественно.
Цитата(Дмитрий Т @  29.6.2006,  08:25 Найти цитируемый пост)

GUI таблица (сетка), к примеру, должна позволять перемещаться по базе, сортировать и редактировать, 
но при этом не загружать весь миллион в память.

Поэтому то, о чём Вы говорите, является спецификой работы приложения с БД.

Вы можете испечь удобный для специфичной задачи API, и пользоваться им. И это будет правильно. Для GUI будет свой API, для web-морды - свой, для скриптов, обслуживающих распределённую СУБД,- свой, и т.д. Приложение-приложению рознь (с точки зрения удобства работы с БД). Именно поэтому, работа с СУБД зависит не от GUI/не GUI, а от задачи.

Добавлено @ 07:56 
Я предпочитаю использовать интерфейсы, основанные в свою очередь на интерфейсах, имплементирующих Python Database API Specification v2.0. А уж как "укутать" эти интерфейсы в удобную для задачи API - третье дело smile
PM MAIL   Вверх
pythonwin
Дата 29.6.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



предлагаю использовать - SQLObject+wxPython. при этом не придется писать код подобный
Цитата(diam @  29.6.2006,  03:58 Найти цитируемый пост)
"SELECT * FROM my_lovean_table"
. Аналог 
Код

имя_таблицы.select()

надеюсь раздница чувствуется  smile  
PM WWW GTalk Jabber   Вверх
Дмитрий Т
Дата 29.6.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Цитата(diam @ 29.6.2006,  08:50)
Цитата(Дмитрий Т @  29.6.2006,  08:25 Найти цитируемый пост)

GUI таблица (сетка), к примеру, должна позволять перемещаться по базе, сортировать и редактировать, 
но при этом не загружать весь миллион в память.

Поэтому то, о чём Вы говорите, является спецификой работы приложения с БД.

Не спорю, как раз и хотел узнать, а есть ли наработки в питоне на мою специфику.
Насколько понял - только в qt, но меня отталкивает их политика с лицензиями. 
PM MAIL WWW ICQ Skype   Вверх
Berliner
Дата 29.6.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Мне бы хотелось увидеть пример подключения к базе Syabse ASA  5.0.5 или ASE 12.0 и выборки данных
через ODBC пожалуста напишите пример плиз  
PM   Вверх
diam
Дата 29.6.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 3
Всего: 16



Цитата(pythonwin @  29.6.2006,  13:53 Найти цитируемый пост)
надеюсь раздница чувствуется  smile   


pythonwin, тогда разберём несколько примеров, что бы сразу же всё было ясно smile. Если не против, разберём примеры с СУБД PostgreSQL. Можно с Oracle. (MySQL не предлагать smile ).
Примеры сильно утрирую. Дабы было понятнее. В реальной жизни структура несколько сложнее smile.

Пример 1.

Есть три таблицы.
Код

-- Таблица 1: справочник валют
--
-- id   - идентификатор валюты
-- name - наименование валюты
CREATE TABLE currencies
  (
    id SERIAL primary key,
    name TEXT not null unique
  );

-- Таблица 2: состояния операций с валютами
--
-- id    - ключ
-- fd    - момент времени, начиная с которого состояние
--         проведения операций вступает в силу
-- state - состояние проведения операций:
--           1 - операции проводятся
--           2 - операции заблокированы
CREATE TABLE currencystates
  (
    id BIGSERIAL primary key,
    fd TIMESTAMP not null default CURRENT_TIMESTAMP,
    state INTEGER not null CHECK(state IN (1, 2))
  );

-- Таблица 3: курсы валют по отношению к рублю
-- (стоимость валюты в валюте N1 - рублях)
--
-- id   - ключ
-- fd   - момент времени, начиная с которого заданный курс
--        вступает в силу
-- rate - новый курс
CREATE TABLE currencyrates
  (
    id BIGSERIAL primary key,
    fd TIMESTAMP not null default CURRENT_TIMESTAMP,
    rate DOUBLE PRECISION not null
  );

Если что-то непонятно в структуре таблиц (в логике), спрашивайте, объясню.

Задача.
Предоставить информацию в виде таблицы (наименование валюты, курс) на момент времени t1 ('01.04.2006 02:30:00'), отсортированную по наименованию валюты, при этом выбирать только ту валюту, операции с которой на момент времени t1 были разрешены.

Прошу предоставить решение, использующее:
Цитата(pythonwin @  29.6.2006,  13:53 Найти цитируемый пост)
предлагаю использовать - SQLObject+wxPython


Своё решение покажу позже.    

Это сообщение отредактировал(а) diam - 29.6.2006, 22:10
PM MAIL   Вверх
Berliner
Дата 3.7.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Хотелось бы решение  smile  
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1194 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.