import json
from decimal import Decimal
def to_json(obj):
if isinstance(obj, Decimal):
return float(obj)
return str(obj)
filed_names = ['a', 'b', 'c', 'd', 'e']
data = [(1, 'Max', 'АВ', Decimal('55.8694248'), Decimal('37.6647453')), (2, 'Nick', 'afsd', Decimal('55.8691788'), Decimal('37.6650843')), (3, 'Jason', 'выаф', Decimal('55.8697598'), Decimal('37.6647674'))]
json_str = json.dumps([dict(zip(field_names, i)) for i in data)], ensure_ascii=False, default=to_json)
fetchone
возвращает только один результат, как следует из его названия. Надо заменить на fetchall
, если надо много. Во-вторых, ошибки возникают из-за того, что не совпадают типы передаваемых параметром с ожидаемыми. double precision
после двоеточия. c.execute('select * from GetAllNotes(%s::double, %s::double)', (longitude, latitude))
c.callproc('GetAllNotes', (float(longitude), float(latitude)))