Flask:连接到 sqlite
Flask: Connect to sqlite
所以我是 Python 的新手,目前正在试用 Flask。我已经阅读了大量关于如何使用 flask 配置与简单数据库的连接但没有成功的文档和博客。你们能帮帮我吗?
我现在不想要任何花哨的东西,只是为了建立连接。下面是我想要开始工作的带有简单测试查询的代码。
结果是一个普通的 500 内部服务器错误。
app = Flask(__name__)
from flask import Flask
import sqlite3
from flask import g
@app.before_request
def before_request():
g.db = sqlite3.connect("database.db")
@app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
g.db.close()
@app.route('/')
def hello_world():
g.db.execute("INSERT INTO test VALUES 'TestValue'")
g.db.commit()
if __name__ == '__main__':
app.run()
有几件事可能会导致这里出现问题:
首先,您的应用程序需要先导入 Flask class,然后才能构建应用程序。所以:
app = Flask(__name__):
应该遵循导入语句。
我假设您收到 500 服务器错误,这不是导致问题的原因。
其次,您的插入有一个小的语法错误。它应该是:
g.db.execute("INSERT INTO test VALUES ('TestValue')")
请阅读SQLite documentation on the correct syntax for using insertions. Or see this tutorial(其实比较有启发性)
最后,我怀疑您还没有设置数据库,这就是插入错误的原因。例如,如果数据库不存在,Flask 如何将数据插入 table?
您应该认识到 Flask 足够智能来创建一个 SQLite 数据库,您将在名为 database.db
的工作目录中找到它,这正是您在这里所做的:
g.db = sqlite3.connect("database.db")
但这不会用正确的模式填充该数据库以允许您通过 Flask 应用程序实际插入数据。您需要的是通过将模式写入数据库来初始化数据库。例如,创建架构:
CREATE TABLE test (
field1 STRING
);
然后,在命令提示符下发出:
sqlite3 database.db < schema.sql
这将创建一个数据库,其中包含一个名为 test 的 table,它接受一个字符串类型的字段。现在数据库已经初始化,您可以通过 Flask 应用程序写入它。较大的项目通常会有一个数据库初始化脚本。
所以我是 Python 的新手,目前正在试用 Flask。我已经阅读了大量关于如何使用 flask 配置与简单数据库的连接但没有成功的文档和博客。你们能帮帮我吗?
我现在不想要任何花哨的东西,只是为了建立连接。下面是我想要开始工作的带有简单测试查询的代码。
结果是一个普通的 500 内部服务器错误。
app = Flask(__name__)
from flask import Flask
import sqlite3
from flask import g
@app.before_request
def before_request():
g.db = sqlite3.connect("database.db")
@app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
g.db.close()
@app.route('/')
def hello_world():
g.db.execute("INSERT INTO test VALUES 'TestValue'")
g.db.commit()
if __name__ == '__main__':
app.run()
有几件事可能会导致这里出现问题:
首先,您的应用程序需要先导入 Flask class,然后才能构建应用程序。所以:
app = Flask(__name__):
应该遵循导入语句。
我假设您收到 500 服务器错误,这不是导致问题的原因。
其次,您的插入有一个小的语法错误。它应该是:
g.db.execute("INSERT INTO test VALUES ('TestValue')")
请阅读SQLite documentation on the correct syntax for using insertions. Or see this tutorial(其实比较有启发性)
最后,我怀疑您还没有设置数据库,这就是插入错误的原因。例如,如果数据库不存在,Flask 如何将数据插入 table?
您应该认识到 Flask 足够智能来创建一个 SQLite 数据库,您将在名为 database.db
的工作目录中找到它,这正是您在这里所做的:
g.db = sqlite3.connect("database.db")
但这不会用正确的模式填充该数据库以允许您通过 Flask 应用程序实际插入数据。您需要的是通过将模式写入数据库来初始化数据库。例如,创建架构:
CREATE TABLE test (
field1 STRING
);
然后,在命令提示符下发出:
sqlite3 database.db < schema.sql
这将创建一个数据库,其中包含一个名为 test 的 table,它接受一个字符串类型的字段。现在数据库已经初始化,您可以通过 Flask 应用程序写入它。较大的项目通常会有一个数据库初始化脚本。