OperationalError: no such table: books on python anywhere
OperationalError: no such table: books on python anywhere
我在 python 上的任何地方都有一个文件结构:
flaskhost(文件夹),其中包含:
- app.py
- books.db
app.py 包含 -:
import flask
from flask import request, jsonify
import sqlite3
app = flask.Flask(__name__)
app.config["DEBUG"] = True
def dict_factory(cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
@app.route('/', methods=['GET'])
def home():
return '''<h1>Distant Reading Archive</h1>
<p>A prototype API for distant reading of science fiction novels.</p>'''
@app.route('/api/v1/resources/books/all', methods=['GET'])
def api_all():
conn = sqlite3.connect('books.db')
conn.row_factory = dict_factory
cur = conn.cursor()
all_books = cur.execute('SELECT * FROM books;').fetchall()
return jsonify(all_books)
@app.errorhandler(404)
def page_not_found(e):
return "<h1>404</h1><p>The resource could not be found.</p>", 404
@app.route('/api/v1/resources/books', methods=['GET'])
def api_filter():
query_parameters = request.args
id = query_parameters.get('id')
published = query_parameters.get('published')
author = query_parameters.get('author')
query = "SELECT * FROM books WHERE"
to_filter = []
if id:
query += ' id=? AND'
to_filter.append(id)
if published:
query += ' published=? AND'
to_filter.append(published)
if author:
query += ' author=? AND'
to_filter.append(author)
if not (id or published or author):
return page_not_found(404)
query = query[:-4] + ';'
conn = sqlite3.connect('books.db')
conn.row_factory = dict_factory
cur = conn.cursor()
results = cur.execute(query, to_filter).fetchall()
return jsonify(results)
if __name__ == '__main__':
app.run()
我正在尝试按照本教程进行操作
https://programminghistorian.org/en/lessons/creating-apis-with-python-and-flask
我的网站托管于:
但是当我通过
调用 api 时
http://127.0.0.1:5000/api/v1/resources/books?author=Connie+Willis
它告诉我错误:
sqlite3.OperationalError: no such table: books
如何解决此问题并在 pythonanywhere.com 上托管应用程序?
P.S 在我的本地机器上它工作得很好
在 Pythonanywhere 上,当指向模板或静态文件以外的内容时(存储在它们自己的适当目录中,可通过 flask
访问),您必须提供完整路径:
conn = sqlite3.connect('/home/your_username/flaskhost/books.db')
我在 python 上的任何地方都有一个文件结构:
flaskhost(文件夹),其中包含:
- app.py
- books.db
app.py 包含 -:
import flask
from flask import request, jsonify
import sqlite3
app = flask.Flask(__name__)
app.config["DEBUG"] = True
def dict_factory(cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
@app.route('/', methods=['GET'])
def home():
return '''<h1>Distant Reading Archive</h1>
<p>A prototype API for distant reading of science fiction novels.</p>'''
@app.route('/api/v1/resources/books/all', methods=['GET'])
def api_all():
conn = sqlite3.connect('books.db')
conn.row_factory = dict_factory
cur = conn.cursor()
all_books = cur.execute('SELECT * FROM books;').fetchall()
return jsonify(all_books)
@app.errorhandler(404)
def page_not_found(e):
return "<h1>404</h1><p>The resource could not be found.</p>", 404
@app.route('/api/v1/resources/books', methods=['GET'])
def api_filter():
query_parameters = request.args
id = query_parameters.get('id')
published = query_parameters.get('published')
author = query_parameters.get('author')
query = "SELECT * FROM books WHERE"
to_filter = []
if id:
query += ' id=? AND'
to_filter.append(id)
if published:
query += ' published=? AND'
to_filter.append(published)
if author:
query += ' author=? AND'
to_filter.append(author)
if not (id or published or author):
return page_not_found(404)
query = query[:-4] + ';'
conn = sqlite3.connect('books.db')
conn.row_factory = dict_factory
cur = conn.cursor()
results = cur.execute(query, to_filter).fetchall()
return jsonify(results)
if __name__ == '__main__':
app.run()
我正在尝试按照本教程进行操作
https://programminghistorian.org/en/lessons/creating-apis-with-python-and-flask
我的网站托管于:
但是当我通过
调用 api 时http://127.0.0.1:5000/api/v1/resources/books?author=Connie+Willis
它告诉我错误:
sqlite3.OperationalError: no such table: books
如何解决此问题并在 pythonanywhere.com 上托管应用程序?
P.S 在我的本地机器上它工作得很好
在 Pythonanywhere 上,当指向模板或静态文件以外的内容时(存储在它们自己的适当目录中,可通过 flask
访问),您必须提供完整路径:
conn = sqlite3.connect('/home/your_username/flaskhost/books.db')