Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Inny

[PYTHON] RestAPI - problem ze zwrotem danych

inny python flask flask-restless

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 l3szcz

    Just Leszcz :>

  • Użytkownik

Reputacja: 52
Pomocny

  • Postów:374
  • GG:
  • Imię:Tomek
  • Lokalizacja:Pomorze
Offline

Napisano 19.12.2018 21:45

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

  • +
  • -
  • 0

@DarkGL - daj mi ciacho!  :crazy:


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 984
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 20.12.2018 13:02

Podstawowe pytanie w bazie te pole jest typu VARCHAR czy jakiego ?

https://www.reddit.c...mysqldb_result/
  • +
  • -
  • 0

#3 l3szcz

    Just Leszcz :>

  • Autor tematu
  • Użytkownik

Reputacja: 52
Pomocny

  • Postów:374
  • GG:
  • Imię:Tomek
  • Lokalizacja:Pomorze
Offline

Napisano 20.12.2018 22:02

VARCHAR


  • +
  • -
  • 0

@DarkGL - daj mi ciacho!  :crazy:


#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 984
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 22.12.2018 15:04

restaurant = relationship('Restaurant')
Podaj również kod modelu Restaurant :P
  • +
  • -
  • 0

#5 l3szcz

    Just Leszcz :>

  • Autor tematu
  • Użytkownik

Reputacja: 52
Pomocny

  • Postów:374
  • GG:
  • Imię:Tomek
  • Lokalizacja:Pomorze
Offline

Napisano 27.12.2018 12:54

Restaurant zwraca dane poprawnie, sprawdzone ;) 


  • +
  • -
  • 0

@DarkGL - daj mi ciacho!  :crazy:






Również z jednym lub większą ilością słów kluczowych: inny, python, flask, flask-restless

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych