Web Service 返回: sqlite3.操作错误:没有这样的表:



我正在尝试使用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 serializableif 表示您正在尝试发送类或类似类的实例。您需要确保只返回纯 python 数据结构(例如list/dict/str等(。

对于命令行问题,您需要确保已运行 CREATE TABLE 命令以首先在数据库中生成表,然后再从中进行选择。还要检查您访问的是正确的sqlite数据库文件,其中包含表。

我不确定,但从外观上看,我认为您没有将烧瓶应用程序配置为支持您创建的数据库 应该有某种集成数据库的app.config((。

相关内容

最新更新