11import importlib
2- import json
32from inspect import isclass
43
54import sqlalchemy .orm
6- from sqlalchemy import Table , column , inspect , select , table , text
5+ from sqlalchemy import inspect
76from sqlalchemy .exc import NoInspectionAvailable
87from sqlalchemy .orm import ColumnProperty , RelationshipProperty
9- from sqlalchemy .orm .relationships import foreign
108
11- from . import validator
12-
13-
14- def load_entities_from_json (json_filepath ):
15- try :
16- with open (json_filepath , 'r' ) as f :
17- entities = json .loads (f .read ())
18- except FileNotFoundError as error :
19- raise FileNotFoundError (error )
20-
21- validator .SchemaValidator .validate (entities )
22-
23- return entities
9+ try :
10+ # relative import
11+ from . import validator
12+ except ImportError :
13+ import validator
2414
2515
2616class ClassRegistry :
@@ -218,7 +208,7 @@ def instantiate_obj(self, class_path, kwargs, key_is_data, parent, parent_attr_n
218208 class_attr = getattr (parent .__class__ , parent_attr_name )
219209 if isinstance (class_attr .property , ColumnProperty ):
220210 raise TypeError ('invalid class attribute type' )
221-
211+
222212 obj = class_ (** filtered_kwargs )
223213 self ._session .add (obj )
224214 # self._session.flush()
@@ -229,17 +219,17 @@ def instantiate_obj(self, class_path, kwargs, key_is_data, parent, parent_attr_n
229219 if isinstance (class_attr .property , ColumnProperty ):
230220 foreign_key = str (
231221 list (getattr (parent .__class__ , parent_attr_name ).foreign_keys )[0 ].column )
232- foreign_key_id = self ._query_instance_id (
222+ foreign_key_id = self ._query_instance_id (
233223 class_ , filtered_kwargs , foreign_key )
234224 return foreign_key_id
235225
236226 return self ._session .query (class_ ).filter_by (** filtered_kwargs ).one ()
237227
238228 def _query_instance_id (self , class_ , filtered_kwargs , foreign_key ):
239229 # .id should be the foreign key
240- arr = foreign_key .rsplit ('.' )
241- column_name = arr [len (arr )- 1 ]
230+ arr = foreign_key .rsplit ('.' )
231+ column_name = arr [len (arr )- 1 ]
242232
243- result = self .session .query (
233+ result = self .session .query (
244234 getattr (class_ , column_name )).filter_by (** filtered_kwargs ).one ()
245235 return getattr (result , column_name )
0 commit comments