Wpis z mikrobloga

Piszę sobie API, które odpytuje lokalną bazę plikową w SQLite.
Napisałem dobrze pobieranie informacji na podstawie jednego parametru, ale nie mam pojęcia jak to ugryźć dla wielu (tych samych) parametrów. Tj. jak wysyłam żądanie:

GET /api/getaddr?id=12345678
to dostaje poprawną odpowiedź.

Jednak chciałbym użyć czegoś takiego:

GET /api/getaddr?id=12345678&id=98765432&id=12345432
ewentualnie:

GET /api/getaddr?id=12345678,98765432,12345432
Z przecinkami próbowałem, jednak aplikacja się wykrzaczała, a dodawanie splita i działanie na liście jest ponad moje możliwości :(

Nie mogę znaleźć na ten temat dokumentacji - wszystko rozbija się o różne parametry, nie identyczne. Aplikacja zwraca dane w postaci JSONa. Kod funkcji poniżej ( z już dołożonym sprawdzeniem, jeżeli ID ma więcej znaków niż 34, jednak sprawdza tylko pierwszy):

@app.route('/api/addr', methods=['GET'])
def api_all():
query_parameters = request.args
id = query_parameters.get('id')

query = "SELECT address, balance AS final_balance FROM addresses WHERE"
to_filter = []

if len(id)>34:
id = query_parameters.getlist('id')
for i in id:
query += ' address=? AND '
to_filter.append(i)
query = query + ' ;'
conn = sqlite3.connect('addresses.sqlite3')
#name the columns in result
conn.row_factory = dict_factory
cur = conn.cursor()
results = cur.execute(query, to_filter).fetchall()
return jsonify({id:results})

if len(id)<=34:
query += ' address=?'
to_filter.append(id)
if not (id):
return pnf(404)

query = query + ' ;'

conn = sqlite3.connect('addresses.sqlite3')
#name the columns in result
conn.row_factory = dict_factory
cur = conn.cursor()

results = cur.execute(query, to_filter).fetchall()

return jsonify({id:results})

Kod może mieć trochę śmieci, ponieważ pisałem to na podstawie poradnika. Jestem totalnie świeży jeżeli chodzi o flaska.
Będę wdzięczny za każdą pomoc

#python #naukaprogramowania
#flask
  • 12
@jaca_66: hej, tak, to tylko API na mój użytek by się poduczyć. Dane które przekazuje są jawne i dostępne w internecie, także nie widzę problemu. Piszę API do Dogecoina, które będzie sprawdzać ile coinów znajduje się w adresie portfela, jednak no w trybie bulk to mi się to nie udaje. Może tak jak poprzedniczka piszę, powinienem się przesiąść na FastAPI i tam pisać (ale na Debianie mam z tym tyle problemów,
@LongWayHome: co Ty weź wyluzuj, to jest proste jak cep, jak potrzebujesz pomocy to mogę Ci pomóc, tylko opisz dokładnie problem itd, na początku obczaj sobie co to w ogóle jest API w pythonie, jak przekazywać parametry, payload, jak otrzymywać itd