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

Поиск:

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


Опытный
**


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

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



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

smile 
PM MAIL   Вверх
dvska
Дата 5.7.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 6
Всего: 9



Цитата(Berliner @ 29.6.2006,  17:27)
Мне бы хотелось увидеть пример подключения к базе Syabse ASA  5.0.5 или ASE 12.0 и выборки данных
через ODBC пожалуста напишите пример плиз

Код

# -*- coding: windows-1251 -*-
import mx.ODBC.Windows as odbc

conn = odbc.connect(YOUR_SYBASE_ODBC_DB_NAME, YOUR_SYBASE_DB_USER_ID, YOUR_SYBASE_DB_USER_PASSWORD) 
cur = conn.cursor()
cur.execute('Select col1, col2 from YourTable')
data=cur.fetchall()
 
--------------------
PM MAIL   Вверх
pythonwin
Дата 13.7.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Уважаемый ,diam, - специально для Вас!

создаем БД
Код

createdb -E=UNICODE fvtest --username=postgres


Запускаем код
Код

from sqlobject import *
from datetime import datetime
connection_string = "postgres://postgres:1234567@localhost:5432/fvtest"
connection = connectionForURI(connection_string)
sqlhub.processConnection = connection

class Currencies(SQLObject):
    class sqlmeta:
        table ='currencies'
    name = UnicodeCol(unique=True,notNone=True) 
     

class Currencystates(SQLObject): 
    class sqlmeta:
        table ='currencystates' 
    state = EnumCol(enumValues=['1','2'],default="1") 
    fd = DateTimeCol(default=datetime.now,notNone=True) 
     
     
class Currencyrates(SQLObject): 
    class sqlmeta: 
        table ='currencyrates' 
    fd = DateTimeCol(default=datetime.now,notNone=True) 
    rate = CurrencyCol(notNone=True)
Currencies.createTable()
Currencystates.createTable()
Currencyrates.createTable()


Добавлено @ 13:43 
PS. Пример для PostgreSQL 
PM WWW GTalk Jabber   Вверх
pythonwin
  Дата 13.7.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот ещё (правда не моё, но бесплатное)  -   

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  DobbyV1.0.rar 11,03 Kb
PM WWW GTalk Jabber   Вверх
diam
Дата 13.7.2006, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smile .create()
pythonwin, можно на ты? На форуме дружественная обстановка, и мы вроде как не ненавидим друг друга. Поэтому зачем такие слова: "Уважаемый ,diam, - специально для Вас!". Даже обидно немного.
smile .close()

pythonwin, погоди, ты не до конца доделал smile. Ты просто создал таблички. А задача-то вот она:
Цитата

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


Напиши решение, я позже прокомментирую. 
PM MAIL   Вверх
pythonwin
Дата 14.7.2006, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(diam @  14.7.2006,  06:33 Найти цитируемый пост)
можно на ты

Можно и на ты  smile  
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 14.7.2006, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



diam, посмотри http://python.org/pypi/PythonCard/0.8.1 - рисуется довольно легко. советую PythonCard 0.8.2
 
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 14.7.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



пример использования таблицы можно посмотреть здесь

немного поправил, чтобы тебе, diam, было легче:

Код

from wxPython.wx import *
from   wxPython.grid import *
from   wxPython.lib.mixins.grid import wxGridAutoEditMixin
import sys, os

ID_ABOUT  = 102
ID_HELP   = 103
ID_EXIT   = 104
ID_VIEW   = 105
ID_OPEND  = 107
ID_OPENS  = 101
ID_SETUP  = 108
ID_OUTPUT = 106
ID_TEST_BUTTON = 109

class DataGrid(wxGrid):
    def __init__(self, parent):
        wxGrid.__init__(self, parent, -1)
        self.wxPostion=(50,50)
        self.moveTo = None

        self.CreateGrid(25, 25)
        self.SetCellValue(6, 0, "123.34")

        attr = wxGridCellAttr()
        attr.SetTextColour(wxBLACK)
        attr.SetBackgroundColour(wxRED)
        attr.SetFont(wxFont(10, wxSWISS, wxNORMAL, wxBOLD))

        self.SetColLabelAlignment(wxALIGN_LEFT, wxALIGN_BOTTOM)

class MyParentFrame(wxMDIParentFrame):
     def __init__(self):
         wxMDIParentFrame.__init__(self, None, -1, "My App")

         self.CreateStatusBar()
         self.SetStatusText("This is the statusbar")

         tb = wxToolBar(self,-1)
         tb.AddControl(wxButton(tb, ID_TEST_BUTTON, 
"Button",wxDefaultPosition, wxDefaultSize))
         tb.Realize()

         FileMenu = wxMenu()
         FileMenu.Append(ID_OPENS, "Open S&etup File", "Open a setup file for use in this session")
         FileMenu.Append(ID_OPEND, "Open D&ata File", "Open a data file fo ruse in this session")
         FileMenu.Append(ID_EXIT, "E&xit", "Terminate the program")

         ViewMenu = wxMenu()
         ViewMenu.Append(ID_SETUP, "S&etup", "View the current setup file")
         ViewMenu.Append(ID_OUTPUT, "O&utput", "View the current output file")

         HelpMenu = wxMenu()
         HelpMenu.Append(ID_HELP, "H&elp", "More information about this program")
         HelpMenu.Append(ID_ABOUT, "A&bout", "More information about this program")

         menuBar = wxMenuBar()
         menuBar.Append(FileMenu, "&File")
         menuBar.Append(ViewMenu, "&View")
         menuBar.Append(HelpMenu, "&Help")

         self.SetMenuBar(menuBar)

         EVT_MENU(self, ID_ABOUT, self.OnAbout)
         EVT_MENU(self, ID_EXIT,  self.TimeToQuit)
         EVT_MENU(self, ID_OPEND, self.OpenDataFile)

         DataChildFrame=wxMDIChildFrame(self, -1, "Data View")
         DataChildFrame.Show(true)

         dg = DataGrid(DataChildFrame)

     def OnAbout(self, event):
         dlg = wxMessageDialog(self, "This sample program shows off\n"
                               "frames, menus, statusbars, and this\n"
                              "message dialog.",
                               "About Me", wxOK | wxICON_INFORMATION)
         dlg.ShowModal()
         dlg.Destroy()

     def test():
         pass

     def TimeToQuit(self, event):
         self.Close(true)

     def OpenDataFile(self, event):
         pass

class MyApp(wxApp):
     def OnInit(self):
         frame = MyParentFrame()
         frame.Show(true)
         self.SetTopWindow(frame)
         return true

app = MyApp(0)
app.MainLoop()

 
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 14.7.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



diam, а вот и SELECT
Код

##t1 ('01.04.2006 02:30:00')
Currencies.get(id).select(orderBy=Currencies.q.name)


Цитата

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

Вот эту часть задания плохо понял, - пожалуйста, diam, привети пример в SQL.
 
PM WWW GTalk Jabber   Вверх
pythonwin
Дата 14.7.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот ещё пример:
Код

from wxPython.wx import *
from wxPython.grid import *

class CustomCellChoiceEditor(wxPyGridCellEditor):
    def __init__(self, varDefDict, editable):
        wxPyGridCellEditor.__init__(self)
        self._varDefDict = varDefDict
        self._editable = editable

    def Create(self, parent, id, evtHandler):
        """
        Called to create the control, which must derive from wxControl.
        """
        self._tc = wxChoice(parent, id, choices = self._varDefDict.values())
        if len(self._varDefDict.keys()):
            self._tc.SetSelection(0)
        self.SetControl(self._tc)
        if evtHandler:
            self._tc.PushEventHandler(evtHandler)


    def SetSize(self, rect):
        """
        Called to position/size the edit control within the cell rectangle.
        If you don't fill the cell (the rect) then be sure to override
        PaintBackground and do something meaningful there.
        """
        self._tc.SetDimensions(rect.x, rect.y, rect.width+4, rect.height+4,
                               wxSIZE_ALLOW_MINUS_ONE)


    def BeginEdit(self, row, col, grid):
        """
        Fetch the value from the table and prepare the edit control
        to begin editing.  Set the focus to the edit control.
        """
        self.startValue = grid.GetTable().GetValue(row, col)
        self._tc.SetStringSelection(self._varDefDict[self.startValue])
        self._tc.SetFocus()


    def EndEdit(self, row, col, grid):
        """
        Complete the editing of the current cell. Returns true if the value
        has changed.  If necessary, the control may be destroyed.
        """
        changed = false

        pclDescr = self._tc.GetStringSelection()
        # extract pcl
        pcl = pclDescr.split('    ')[0]
        if pcl != self.startValue :
            changed = true
            grid.GetTable().SetValue(row, col, pcl) # update the table

        self.startValue = ''
        return changed


    def Reset(self):
        """
        Reset the value in the control back to its starting value.
        """
        self._tc.SetStringSelection(self._varDefDict[self.startValue])


    def Clone(self):
        """
        Create a new object which is the copy of this one
        """
        return CustomCellChoiceEditor(self._varDefDict, self._editable)

#---------------------------------------------------------------------------

class TestFrame(wxFrame):
    def __init__(self, parent):
        wxFrame.__init__(self, parent, -1, "Custom Grid Cell Editor Test",
                         size=(400,120))
        grid = wxGrid(self, 2001, size = wxSize(360, 80))
        grid.CreateGrid(2, 2)
        grid.SetColLabelValue(0, 'Col 1')
        grid.SetColLabelValue(1, 'Col 2')
        grid.SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE)
        grid.SetColSize(1, 280)
        grid.SetRowLabelSize(0)
        grid.SetCellValue(1, 1, 'A')
        dict = {'A':'A    Description_of_A', 'B':'B    Description_of_B'}
        grid.SetCellEditor(1, 1, CustomCellChoiceEditor(dict, true))


#---------------------------------------------------------------------------

if __name__ == '__main__':
    import sys
    app = wxPySimpleApp()
    frame = TestFrame(None)
    frame.Show(true)
    app.MainLoop()
 
PM WWW GTalk Jabber   Вверх
J2A
Дата 14.7.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



pythonwin, ты в wx используешь устаревший синтаксис. Сейчас акутально разделять пространства имен, т.е. не
Код

from wxPython.wx import *
class MyWin(wxWindow):
    pass


а 
Код

import wx
class MyWin(wx.Window):
    pass
 
--------------------
Be easy, stay cool
PM MAIL WWW Jabber   Вверх
pythonwin
Дата 14.7.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А у меня новый ошибками ругается smile  
PM WWW GTalk Jabber   Вверх
Berliner
Дата 20.7.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасиб за код.

Код

# -*- coding: windows-1251 -*-
import mx.ODBC.Windows as odbc
conn = odbc.connect(YOUR_SYBASE_ODBC_DB_NAME, YOUR_SYBASE_DB_USER_ID, YOUR_SYBASE_DB_USER_PASSWORD) 
cur = conn.cursor()
cur.execute('Select col1, col2 from YourTable')
data=cur.fetchall()


выполнил вылазит ошибка -Подскажите пожалуста, че импорт не может сделать?


import mx.ODBC.Windows as odbc
ImportError: No module named mx.ODBC.Windows 
PM   Вверх
dvska
  Дата 20.7.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 6
Всего: 9



user posted image
Цитата(Berliner @  20.7.2006,  19:35 Найти цитируемый пост)
выполнил вылазит ошибка -Подскажите пожалуста, че импорт не может сделать?


import mx.ODBC.Windows as odbc
ImportError: No module named mx.ODBC.Windows  


Потому что в стандартной поставке питона нет модуля для работы с ODBC. Его надо скачать и поставить. Я использовал коммерческий модуль mxODBC - Python ODBC Interface. Можно также взять бесплатный вариант из поставки pyWin32 http://www.python.net/crew/mhammond/win32/Downloads.html . user posted image
  

Это сообщение отредактировал(а) dvska - 20.7.2006, 20:49
--------------------
PM MAIL   Вверх
pythonwin
Дата 21.7.2006, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



diam, пожалуйста, покажи решение... 
PM WWW GTalk Jabber   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




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


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

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