У меня есть база данных MySQL с таблицей музея:
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| idMuseums | int(11) | NO | PRI | NULL | auto_increment |
| nameMuseums | varchar(45) | YES | | NULL | |
| City | varchar(60) | NO | | NULL | |
| Lat | decimal(9,6) | NO | | NULL | |
| Lon | decimal(9,6) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
С помощью клиента Android я отправляю координаты GPS на сервер Python через StringRequest со следующими параметрами:
//some code
params.put("lat", String.format("%.6f",lat));
params.put("lon", String.format("%.6f",lon));
Log.d(IDENTIFIER,"lat lon in request: "+String.format("%.6f",lat)+" "+String.format("%.6f",lon));
^----in log the coordinates are correct and they have a comma, e.g. 45,451691 9,161442
ИтакНа сервере (используя Flask) я хотел бы добавить новый Музей, и я попробовал это:
try:
m = Museum(id=0, name=request.form['name'], city=request.form['city'], lat=request.form['lat'], lon=request.form['lon'])
db.session.add(m)
db.session.commit()
return '', 200
except Exception as e:
db.session.rollback()
return e
Проблема:
, если я используюlat=request.form['lat'], lon=request.form['lon']
как в примере, я не получаю цифры после запятой в БД (например, 45.000000 9.000000)
если я использую lat=float(request.form['lat']), lon=float(request.form['lon'])
, я получаю TypeError: 'exceptions.ValueError' object is not callable
, если я использую lat=Decimal(request.form['lat']), lon=Decimal(request.form['lon'])
, я получаю TypeError: 'InvalidOperation' object is not callable
.
Чего мне не хватает?