Форум сайта python.su
ViperА зачем селфу указывать на объект этого класса?
__init__ является целиком и полностью принадлежностью класса, а self указывает на обьект этого класса.
PooH
Лучше для работы с базой воспользоваться каким-нибудь готовым ОРМ, например SQLObject или SQLAlchemy
PooHОй мама родная, а это чего за алхимия? Ещё чего-то изучать?
А здесь поможет lazy loading в ОРМ для больших полей.
Офлайн
FoxPythonВот и такой (почти ) конструктор есть :) DABO http://dabodev.com/ называется, кстати разработчики Microsoft Visual FoxPro писали (Ed Leafe and Paul McNett).
Я хочу как в фокспро: вот язык-среда разработки, ВСЁ больше ничего не надо! Программируй - не хочу! База сама в таблицу запихивается, редактируемые ячейки сами в базе запоминаются. Вот такой я хочу конструктор…
Офлайн
Ой, наконец-то я врубился для чего нужен self. Махом избавился почти от всех глобальных переменных, кроме одной. Переменная-подключение к базе данных осталась глобальной.
Офлайн
как сделать чтобы в гриде ячейка сама расширялась по размерам информации в ней?
Офлайн
Ответ: myGrid.AutoSize()
Офлайн
Помогите пожалуйста сделать имена колонок.
Все колонки получил селектом:
select t.COLUMN_ID, t.COLUMN_NAME from all_tab_columns t where t.TABLE_NAME='TABLE'
order by t.COLUMN_ID
[(1, 'EMPLOYEE_ID'), (2, 'START_DATE'), (3, 'END_DATE'), (4, 'JOB_ID'), (5, 'DEPARTMENT_ID')]
class GridTable(wx.grid.PyGridTableBase):
def __init__(self, dannie):
wx.grid.PyGridTableBase.__init__(self)
self.dannie=dannie
def GetNumberRows(self):
return len(self.dannie)
pass
def GetNumberCols(self):
return len(self.dannie[0])
pass
def GetColLabelValue(self, col):
self.Table = data_info.data_info().Get_Table()
connection = data_info.data_info().connection
cursor = cx_Oracle.Cursor(connection)
sql = ("select t.COLUMN_ID, t.COLUMN_NAME from all_tab_columns t where t.TABLE_NAME=\'%s\'order by t.COLUMN_ID") % (self.Table)
cursor.execute(sql)
cuu=cursor.fetchall()
data = [i[0] for i in cuu]
print sql
print cuu
print data
return cuu
def IsEmptyCell(self, row, col):
return self.dannie[row] [col] is not None
pass
def GetValue(self, row, col):
value = self.dannie[row] [col]
if value is not None:
return value
else:
return ''
pass
def SetValue(self, row, col, value):
self.dannie[row][col]=value
pass
Офлайн
Как-то наподобии такого
class GridTable(wx.grid.PyGridTableBase):
def __init__(self, dannie):
wx.grid.PyGridTableBase.__init__(self)
self.dannie=dannie
self.Table = data_info.data_info().Get_Table()
connection = data_info.data_info().connection
cursor = cx_Oracle.Cursor(connection)
sql = ("select t.COLUMN_NAME from all_tab_columns t where t.TABLE_NAME=\'%s\'order by t.COLUMN_ID") % (self.Table)
cursor.execute(sql)
cuu=cursor.fetchall()
self.col_names = [i[0] for i in cuu]
def GetColLabelValue(self, col):
self.col_names[col]
Отредактировано (Ноя. 2, 2011 11:04:45)
Офлайн
self.col_names = [i for i in cuu]
это мне выдает бред на подобии этого:
…
ADDED LATER:
Работает вот так - self.col_names = [i for i in cuu]
Отредактировано (Ноя. 2, 2011 12:26:50)
Офлайн
Всё работает, только вот если значение ячейки пустое, то грид её просто не показывает, а нужно чтобы показывал. Небольшое добавление: не показывает когда ВСЯ строка пустая, т.е. на строке с id=5(как пример) все значения колонок пустые то он ее просто не показывает.
def GetValue(self, row, col):
value = self.dannie[row] [col]
if value is not None:
return value
else:
return ''
pass
Отредактировано (Ноя. 3, 2011 08:59:36)
Офлайн
Я прокручивал строки через буфер. Вот из какого-то старого проекта, использовался sqlalchemy
http://pastebin.com/gaZULTCm
ЗЫ: возможно здесь расчет нового положения буфера с багом, но другого кода у меня не сохранилось
Офлайн