Hejka naklejka.
Tworzę obecnie API oparte o Flask - konkretniej moduł Flask-Restless (https://flask-restle...s.io/en/stable/) - dokumentację przejrzałem i zapoznałem się z możliwymi technikami.
Kod wygląda tak:
from flask_restless import APIManager apimanager = APIManager(app, flask_sqlalchemy_db=db) apimanager.create_api(Meal, methods=['GET', 'POST'])
Model Meal:
class Meal(db.Model):
__tablename__ = 'meals'
__table_args__ = (
Index('unique_meals', 'date', 'name', unique=True),
)
id = db.Column(Integer, primary_key=True)
date = db.Column(Date, nullable=False)
name = db.Column(String(200), nullable=False)
restaurant_id = db.Column(ForeignKey(
'restaurants.id', ondelete='CASCADE'), nullable=False, index=True)
price = db.Column(String(8), nullable=False)
restaurant = relationship('Restaurant')
Zwrot z serwera:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask_debugtoolbar/__init__.py", line 125, in dispatch_request
return view_func(**req.view_args)
File "/usr/local/lib/python3.6/cProfile.py", line 109, in runcall
return func(*args, **kw)
File "/home/tomek/.local/lib/python3.6/site-packages/flask_restless/views.py", line 157, in decorator
return func(*args, **kw)
File "/home/tomek/.local/lib/python3.6/site-packages/mimerender.py", line 265, in wrapper
content = renderer(**result)
File "/home/tomek/.local/lib/python3.6/site-packages/flask_restless/views.py", line 303, in jsonpify
response = jsonify(*args, **kw)
File "/home/tomek/.local/lib/python3.6/site-packages/flask_restless/views.py", line 219, in jsonify
response = _jsonify(*args, **kw)
File "/usr/local/lib/python3.6/site-packages/flask/json/__init__.py", line 321, in jsonify
dumps(data, indent=indent, separators=separators) + '\n',
File "/usr/local/lib/python3.6/site-packages/flask/json/__init__.py", line 179, in dumps
rv = _json.dumps(obj, **kwargs)
File "/usr/local/lib/python3.6/json/__init__.py", line 238, in dumps
**kw).encode(obj)
File "/usr/local/lib/python3.6/json/encoder.py", line 201, in encode
chunks = list(chunks)
File "/usr/local/lib/python3.6/json/encoder.py", line 430, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "/usr/local/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
yield from chunks
File "/usr/local/lib/python3.6/json/encoder.py", line 325, in _iterencode_list
yield from chunks
File "/usr/local/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
yield from chunks
File "/usr/local/lib/python3.6/json/encoder.py", line 404, in _iterencode_dict
yield from chunks
File "/usr/local/lib/python3.6/json/encoder.py", line 437, in _iterencode
o = _default(o)
File "/usr/local/lib/python3.6/site-packages/flask/json/__init__.py", line 81, in default
return _json.JSONEncoder.default(self, o)
File "/usr/local/lib/python3.6/json/encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'Decimal' is not JSON serializable
Chodzi prawdopodobnie o wartość pobieraną z price mimo, że ustawiłem ją jako string (MySQLowski VARCHAR).
Macie jakąś propozycję jak mógłbym to naprawić?
Użytkownik l3szcz edytował ten post 19.12.2018 21:47


Dodatki SourceMod













