Найти - Пользователи
Полная версия: дубликаты
Начало » Базы данных » дубликаты
1
flashi4
моя модель:
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 |
+—-+——+———-+
ods
Для начала сделай:
Column('user', String(40), unique=True),
Дубликатов после этого не будет и можно будет подумать о том, как и когда ты на них собираешься реагировать.
flashi4
ods
Для начала сделай:
Column('user', String(40), unique=True),
Дубликатов после этого не будет и можно будет подумать о том, как и когда ты на них собираешься реагировать.
спасибо ))

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

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

Пишу всего месяц на пилонах и еще нифига не понимаю.
ods
flashi4
Переход при повторе user было бы неплохо еще)

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

Пишу всего месяц на пилонах и еще нифига не понимаю.
Вариантов 2, по которым можно определить попытку добавления дубликата:
1) Ловить IntegrityError. Мне этот вариант не нравится тем, что по мере усложнения могут появиться другие причины для этого исключения.
2) Перед добавлением пользователя в транзакции делать выборку из базы с установкой блокировки.
Это принципы работы с реляционной СУБД вообще и через SQLAlchemy в частности. Про Pylons ничего сказать не могу. Возможно, там уже есть что-то готовое для твоей задачи.
flashi4
while True:
try:
user = user(raw_input(“Please enter an user: ”))
break
except SQLError:
print “Oops! Enter an other name…”


вот этот блок правилен?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB