Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2007 12:17:20

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

для тех кого я не достал ламерскими вопросами, еще один :-)

допустим у меня есть такой класс

class Person(SQLObject):
Name = UnicodeCol()
TabNo = StringCol(length=10)
нужно реальзовать такую фичу.
берем имя и табельый номер, если такого табельного номера еще нет - то добавляем нового человека с таким номером и именем.
если табельный номер в таблице имеется - то просто меняем имя на другое.



Офлайн

#2 Фев. 27, 2007 12:32:38

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

если быстро:

def change_name(old_name,prefix):
    return old_name+prefix
def main(name, TabNo):
    if Person.selectBy(TabNo=TabNo).count()==0:
        person1 = Person(name=name, TabNo=TabNo)
    else:
        new_name = change_name(name, '_1') ## хотя если это имя людей, то лучше спросить новые данные
        person1 = Person(name=new_name, TabNo=TabNo)
хотя лучше поставить alternateID = True и ловить ошибку IMHO



Офлайн

#3 Фев. 27, 2007 12:37:59

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

есть пример в http://sqlobject.org/SQLObject.html#many-to-many-relationships

http://sqlobject.org/SQLObject.html#many-to-many-relationships
>>> User.byUsername('bob')
<User 1 username='bob'>
>>> Role.byName('admin')
<Role 1 name='admin'>

посмотри
People.byTabNo
и
People.byTabNo(TabNo)



Офлайн

#4 Фев. 27, 2007 13:07:47

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

спасибо, пока решил тупо влоб - if Person.selectBy(TabNo=TabNo).count()==0



Офлайн

#5 Фев. 27, 2007 13:20:02

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

cleg
спасибо, пока решил тупо влоб - if Person.selectBy(TabNo=TabNo).count()==0
лучше сделай через
Person.byTabno(TabNo)
т.к. при этом возвращается только один объект если есть запись с таким табельным номером или если нет, то генерируется исключение
SQLObjectNotFound



Офлайн

#6 Фев. 27, 2007 15:03:18

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

а если просто - пытаться добавить, потом обрабатывать ошибку?
сделал так, вроде работает… :-)



Офлайн

#7 Фев. 27, 2007 17:00:58

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

cleg
а если просто - пытаться добавить, потом обрабатывать ошибку?
cleg
сделал так, вроде работает… :-)
код покажи, пожалуйста :)



Офлайн

#8 Фев. 27, 2007 17:59:02

Mkdir
Зарегистрирован: 2006-06-30
Сообщения: 211
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

SQLAlchemy



Офлайн

#9 Фев. 28, 2007 07:46:05

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

Mkdir
SQLAlchemy
ты хорошо знаешь SQLAlchmy?
сможешь запостить на форум код аналогичный моему?



Отредактировано (Фев. 28, 2007 12:48:13)

Офлайн

#10 Фев. 28, 2007 13:10:33

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLObject и уникальные столбцы

Mkdir
не знаю…
а чем алхимия лучше? мне SQLObject как новичку показался роднее…
pythonwin
я ваще-то пытаюсь RSS агрегатор примитивнейший наваять, ща мабуть выложу эти 20 строчек кода в отдельную ветку… :-) так как возникло несколько вопросов.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version