Как сравнить WKBElement с элементом geoalchemy2.functions.ST_GeomFromGeoJSON?

Рейтинг: 0Ответов: 1Опубликовано: 08.05.2023

Имеются два словаря из базы данных и запроса к сайту (у последнего данные получены из json):

db_dict = {
    'index': '10',
    'name': 'Красная', 
    'geom': <WKBElement at 0x1f8224c24d0; 0101000020e6100000db5b806cc88e4340115385b319814640>
}

site_dict = {
    'index': '10', 
    'name': 'Красная', 
    'geom': <geoalchemy2.functions.ST_GeomFromGeoJSON at 0x1f8224c3070; ST_GeomFromGeoJSON>
}

if db_dict == site_dict:
    print("данные не изменились")
else:
    print("данные изменились")

Как преобразовать <geoalchemy2.functions.ST_GeomFromGeoJSON at 0x1f8224c3070 в WKBElement, чтобы понять изменились ли данные на сайте для обновления в базе данных? Желательно отследить изменения как в обычных полях, так и в геометрии.

Ответы

▲ 0

Разобрался с проблемой. Достаточно было при формировании поля геометрии для site_dict получить значение через метод session.scalar()

geom_json = {'type': 'Point', 'coordinates': [39.175434519, 45.057818081]}
geom = session.scalar(ga.functions.ST_GeomFromGeoJSON(geom_json, srid=4326))

результат: 'geom': <WKBElement at 0x24aef6db190; 0101000020e6100000e5d868a3749643409981379566874640>