проверить, существует ли запись в таблице пирамида-SQLalchemy? - PullRequest
0 голосов
/ 11 мая 2018

Я разработал приложение с использованием пирамиды SQLalchemy с реляционной базой данных postgres.Я хотел бы проверить, есть ли строка в таблице или нет.Поэтому я попробовал следующие шаги

def nextPage(request):
  query = request.dbsession.query(NewEntry)
  msheet_no = request.params['msheet_no']
  obj1=NewEntry()
  getRoll=query.filter(NewEntry.batch==batch).order_by(-NewEntry.roll_no).first() 
  rollno=getRoll.roll_no+1
  obj1.roll_no = rollno
  if(obj1.msheet_no==msheet_no):
     print("Marksheet No is already existed",obj1.msheet_no,'-',msheet_no)
  else:
     request.dbsession.add(obj1)

В этом коде дубликаты msheet_no вставлены в таблицу.Как избежать дублирования msheet_no, вставляемых в таблицу?

Примечание: msheet_no и rollno являются первичными ключами в таблице

1 Ответ

0 голосов
/ 11 мая 2018

if(obj1.msheet_no==msheet_no): В этом фрагменте кода вы проверяете значение поля msheet_no для вновь созданного объекта, которое всегда будет None и, следовательно, логически не имеет смысла.Здесь два предложения:

  1. Либо получите все значения существующего msheet_no из БД и вставьте, только если его нет.
  2. Запросите пересечение, используя except_ для возвратате значения, которые еще предстоит вставить.

Я думаю, что в вашем сценарии вы должны пойти с первым поиском.Единственным недостатком является то, что вам придется запрашивать каждый раз, когда вы собираетесь вставить новый объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...