LINUX.ORG.RU

Как бы попроще проверить foreign_keys?

 ,


0

1

Сначала скажу, почему меня не устраивает проверка во время комита.

Во-первых, для sqlite (на нем я тестирую свое приложение) нужно включать специальную прагму, чтоб он их начал чекать.

Во-вторых, даже с включенной проверкой, сообщение об ошибке не объяснят, какого именно ключа нет. Просто пишет, что мол не смогло foreign-ключ собрать.

Вот, наговнокодил чуток. Повис, на том, как задать filter в последней строчке. Не могу выцепить класс модели для таблицы по foreign-ключу.

def check_foreign(session, obj):
  obj_table = obj.metadata.tables[obj.__tablename__]
  for (t_k, t_v) in zip(obj_table.columns.keys(), obj_table.columns.values()):
    for f_k in t_v.foreign_keys:
      (table, column) = f_k.target_fullname.split('.')
      f_v = getattr(obj, t_k)
      if f_v:
        f_t = obj.metadata.tables[table]
        print session.query(f_t).filter(getattr(f_t, column) == f_v)

★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.