Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2008 14:17:37

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

дубликаты

моя модель:
import sqlalchemy
from sqlalchemy import *
from sqlalchemy.ext.assignmapper import assign_mapper
from sqlalchemy.ext.sessioncontext import SessionContext
from pylons.database import session_context as ctx

meta = MetaData()

records_table = Table('records', meta,
Column('id', Integer,primary_key=True),
Column('user', String(40)),
Column('password', String(40)),
)

class Record(object):
def __str__(self):
return self.title
record_mapper = assign_mapper(ctx, Record, records_table)

Вопрос:
Как сделать, чтобы не было дубликатов user в записях?
Пример:

+—-+——+———-+
| id | user |password|
+—-+——+———-+
| 1 | 123 | 123 |
| 2 | 123 | 321 |
+—-+——+———-+



Отредактировано (Фев. 4, 2008 14:38:28)

Офлайн

#2 Фев. 4, 2008 15:13:30

ods
От:
Зарегистрирован: 2007-03-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

дубликаты

Для начала сделай:

Column('user', String(40), unique=True),
Дубликатов после этого не будет и можно будет подумать о том, как и когда ты на них собираешься реагировать.



Офлайн

#3 Фев. 4, 2008 15:30:12

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

дубликаты

ods
Для начала сделай:
Column('user', String(40), unique=True),
Дубликатов после этого не будет и можно будет подумать о том, как и когда ты на них собираешься реагировать.
спасибо ))

Переход при повторе user было бы неплохо еще)

Примерно на сообщение : такой пользователь уже существует))

Пишу всего месяц на пилонах и еще нифига не понимаю.



Офлайн

#4 Фев. 4, 2008 15:39:20

ods
От:
Зарегистрирован: 2007-03-03
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

дубликаты

flashi4
Переход при повторе user было бы неплохо еще)

Примерно на сообщение : такой пользователь уже существует))

Пишу всего месяц на пилонах и еще нифига не понимаю.
Вариантов 2, по которым можно определить попытку добавления дубликата:
1) Ловить IntegrityError. Мне этот вариант не нравится тем, что по мере усложнения могут появиться другие причины для этого исключения.
2) Перед добавлением пользователя в транзакции делать выборку из базы с установкой блокировки.
Это принципы работы с реляционной СУБД вообще и через SQLAlchemy в частности. Про Pylons ничего сказать не могу. Возможно, там уже есть что-то готовое для твоей задачи.



Офлайн

#5 Фев. 5, 2008 12:15:11

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

дубликаты

while True:
try:
user = user(raw_input(“Please enter an user: ”))
break
except SQLError:
print “Oops! Enter an other name…”


вот этот блок правилен?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version