Веб-служба возвращает: sqlite3.OperationalError: нет такой таблицы: - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь настроить простой веб-сервис с Python, Flask и SQlite3.Это не работает.

Соединение с БД без веб-службы работает;веб-сервис без подключений к БД работает.Вместе они этого не делают.

если я запускаю это, оно работает:

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.OperationalError: нет такой таблицы: studenti в командной строке DOS.Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

Я не уверен, но, судя по всему, вы не настроили приложение фляги для поддержки созданной вами БД. Должен быть какой-то app.config (), который интегрирует БД.

0 голосов
/ 20 сентября 2019

Вы не предоставили вывод внутренней ошибки сервера - но, по-моему, вы пытаетесь вернуть необработанный list объект, возвращенный из fetchall.

При возврате из функции просмотраВам нужно отправить результаты либо , возвращая шаблон , либо jsonify, выводя результат, чтобы сделать его правильным HTTP-ответом, который может получить браузер.

Вам необходимо добавить

from flask import jsonify

при импорте, а затем при возврате;

return jsonify(risultato)

Если вы получаете ошибки, например, что-то типа not JSON serializable if означает, что вы пытаетесь отправить экземпляр класса или подобного,Вам нужно убедиться, что вы возвращаете только простые структуры данных Python (например, list / dict / str и т. Д.).

Для проблемы с командной строкой вам необходимо убедиться, что выВы выполнили команду CREATE TABLE , чтобы сначала сгенерировать таблицу в базе данных, прежде чем выбрать из нее.Также убедитесь, что вы используете правильный файл базы данных sqlite с таблицей в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...