【问题标题】:Sqlalchemy and Flask API won't return column and value from a databaseSqlalchemy 和 Flask API 不会从数据库返回列和值
【发布时间】:2016-12-14 00:05:11
【问题描述】:

我正在运行一个与 sqlite 数据库绑定的烧瓶 Web 框架。我在返回包含列名和该列值的查询时遇到问题。我在下面包含相关代码。

import threading
import time
import KeySys
import serial
from flask import Flask, request
from flask_restful import reqparse, abort, Api, Resource
from sqlalchemy import create_engine
from json import dumps
from time import sleep
from datetime import datetime

e = create_engine('sqlite:///lockdb.db')
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('LockSwitch')

class Keystat_Meta(Resource):
    def get(self):
        #Connect to databse
        conn = e.connect()
        #Perform query and return JSON data
        query = conn.execute('select * from LockStat')
        return {'KeyStat': [query.cursor.fetchall()]} # I've tried keys() all() items(column, value) and various different queries.

api.add_resource(Keystat_Meta, '/keystat')

if __name__ == '__main__':
    app.run()

【问题讨论】:

  • 您遇到什么错误? query 应该是根据sqlalchemy docs 的字典。尝试打印query.items() 看看是否有结果。
  • 感谢您的帮助,当我执行 query.cursor.fetchall() 时,我得到的值没有列名,如果我执行 query.keys(),我得到所有列名但没有值。如果我做 query.items() 我得到错误 'ResultProxy' object has no attribute 'items'
  • 你可以参考这个帖子stackoverflow.com/questions/22277548/…
  • @ichbinblau 该文档适用于 sqlalchemy .9,已弃用。我正在运行最新的 sqlalchemy 1.1。无论如何我都试过了,但它不起作用 column_description 不再是查询选项。

标签: python sqlite api flask sqlalchemy


【解决方案1】:

如果其他人正在为此苦苦挣扎,我花了一天的时间来解决这个问题,但我找到了解决方案

return {'KeyStat': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多