Commit 1993309a authored by Cosmia Fu's avatar Cosmia Fu

Use SQLAlchemy-provided way to get primary_key, as a solution of the

problem when a model is mapped against a SQLAlchemy Join object.
parent 4605ef7b
from sqlalchemy import tuple_, or_, and_ from sqlalchemy import tuple_, or_, and_, inspect
from sqlalchemy.sql.operators import eq from sqlalchemy.sql.operators import eq
from sqlalchemy.exc import DBAPIError from sqlalchemy.exc import DBAPIError
from ast import literal_eval from ast import literal_eval
...@@ -36,16 +36,8 @@ def get_primary_key(model): ...@@ -36,16 +36,8 @@ def get_primary_key(model):
:param model: :param model:
Model class Model class
""" """
props = model._sa_class_manager.mapper.iterate_properties mapper = inspect(model)
pks = [mapper.get_property_by_column(c).key for c in mapper.primary_key]
pks = []
for p in props:
if hasattr(p, 'columns'):
for c in filter_foreign_columns(model.__table__, p.columns):
if c.primary_key:
pks.append(p.key)
break
if len(pks) == 1: if len(pks) == 1:
return pks[0] return pks[0]
elif len(pks) > 1: elif len(pks) > 1:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment