Сериализация из JSON в объект SQL Alchemy (flask-admin / python) - PullRequest
0 голосов
/ 27 октября 2019

В flask / python мне нужно сериализовать JSON (из Firestore) в объекты SQL Alchemy.

Я не хочу сериализовать объекты SQL Alchemy в JSON. Не это. Мне нужно обратное преобразование.

Идея состоит в том, чтобы перезаписать метод get_query в представлении flask-admin, чтобы восстановить данные из Firestore, но при этом использовать всю мощь flask-admin, например, сортировку повыбранный столбец в представлении и т. д. Кроме того, в этом приложении есть данные, которые сохраняются в postgresql (и мы используем SQL Alchemy в качестве ORM), и данные, которые будут поступать из Firestore. Они должны жить вместе.

Некоторый код и его ошибки:

# flask is imported as f
# flask_sqlalchemy is imported as sa
# also firebase_admin and other related classes with Firebase have been imported

class FakeView(OurExampleModelView):
    column_default_sort = "title"

    def get_query(self):
        # initialize firebase app
        cred = credentials.Certificate(f.current_app.config['GOOGLE_APPLICATION_CREDENTIALS'])
        firebase_admin.initialize_app(cred)

        db = firestore.client()
        users_ref = db.collection(u'users')
        docs = users_ref.stream()

        return sa.BaseQuery(docs)

и получить эту ошибку:

sqlalchemy.exc.InvalidRequestError
sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped entity expected - got '<google.cloud.firestore_v1.document.DocumentSnapshot object at 0x7fe02609d5c0>'

Также пробовал:

class FakeView(OurExampleModelView):
    column_default_sort = "title"

    def get_query(self):
        # initialize firebase app
        cred = credentials.Certificate(f.current_app.config['GOOGLE_APPLICATION_CREDENTIALS'])
        firebase_admin.initialize_app(cred)

        db = firestore.client()
        users_ref = db.collection(u'users')
        docs = users_ref.stream()

        res = [doc.to_dict() for doc in docs]

        return sa.BaseQuery(docs)

, а затем получил это:

sqlalchemy.exc.InvalidRequestError
sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped entity expected - got '{'title': 'Title example', 'image': 'fake_image_url'}'

Есть идеи, как я могу конвертировать из объектов JSON в объекты SQLAlchemy?

Большое спасибо!

...