我正在尝试使用Python,Flask和SQlite3设置一些简单的Web服务。它不起作用。
没有 Web 服务的数据库连接有效;没有数据库连接的 Web 服务工作正常。他们在一起没有。
如果我运行这个,它可以工作:
import sqlite3
conn = sqlite3.connect('scuola.db')
sql = "SELECT matricola,cognome,nome FROM studenti"
cur = conn.cursor()
cur.execute(sql)
risultato = cur.fetchall()
conn.close()
print(risultato)
(所以查询是正确的( 如果我运行这个,它可以工作
import flask
app = flask.Flask(__name__)
def funzione():
return 'Applicazione Flask'
app.add_url_rule('/', 'funzione', funzione)
但是如果我运行这个...
from flask import Flask
import sqlite3
app = Flask(__name__)
@app.route('/',methods=['GET'])
def getStudenti():
conn = sqlite3.connect('scuola.db')
sql = "SELECT matricola,cognome,nome FROM studenti"
cur = conn.cursor()
cur.execute(sql)
risultato = cur.fetchall()
conn.close()
return risultato
它在浏览器中返回内部服务器错误,并且 SQLite3.操作错误:没有这样的表:学生 在 DOS 提示符下。 感谢您的帮助!
您尚未提供内部服务器错误输出 - 但我的第一个猜测是您正在尝试返回从fetchall
返回的原始list
对象。
从视图函数返回时,您需要通过返回模板或jsonify
输出来发送结果,使其成为浏览器可以接收的正确 HTTP 响应。
您需要添加
from flask import jsonify
在您的进口中,然后在返回时;
return jsonify(risultato)
如果您收到错误,例如某些内容not JSON serializable
if 表示您正在尝试发送类或类似类的实例。您需要确保只返回纯 python 数据结构(例如list
/dict
/str
等(。
对于命令行问题,您需要确保已运行 CREATE TABLE 命令以首先在数据库中生成表,然后再从中进行选择。还要检查您访问的是正确的sqlite
数据库文件,其中包含表。
我不确定,但从外观上看,我认为您没有将烧瓶应用程序配置为支持您创建的数据库 应该有某种集成数据库的app.config((。