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