Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶:连接到sqlite_Python_Database_Sqlite_Flask - Fatal编程技术网

Python 烧瓶:连接到sqlite

Python 烧瓶:连接到sqlite,python,database,sqlite,flask,Python,Database,Sqlite,Flask,所以我是Python新手,目前正在试用Flask。我读过很多关于如何使用flask配置到简单数据库的连接的文档和博客,但都没有成功。你们能帮帮我吗 我现在不想要任何花哨的东西,只是为了让连接正常工作。下面是我现在想要使用的代码和一个简单的测试查询 其结果是一个普通的500内部服务器错误 app = Flask(__name__) from flask import Flask import sqlite3 from flask import g @app.before_request def

所以我是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类,然后才能构建应用程序。因此:

app=Flask(\uuuuu name\uuuuuuu):

应遵循导入语句

我假设,由于您有一个500服务器错误,这不是导致问题的原因

第二,插入中有一个小的语法错误。应改为:

g.db.execute(“插入测试值('TestValue')”)

请阅读有关使用插入的正确语法的说明。或者看看(这实际上更让人兴奋)

最后,我怀疑您尚未设置数据库,这就是为什么存在插入错误的原因。例如,如果数据库不存在,Flask如何向表中插入数据

您应该认识到Flask足够聪明,可以创建一个SQLite数据库,您可以在名为
database.db的工作目录中找到它,这正是您在这里所做的:

g.db=sqlite3.connect(“database.db”)

但这并不能用正确的模式填充数据库,从而允许您通过Flask应用程序实际插入数据。您需要的是通过将模式写入数据库来初始化数据库。例如,创建模式:

创建表测试(
字段1字符串
);
然后,在命令提示下发出:

sqlite3 database.db


这将使用一个名为test的表创建一个数据库,该表接受一个string类型的字段。现在数据库已经初始化,您可以通过Flask应用程序对其进行写入。较大的项目通常会有一个数据库初始化脚本。

500错误会导致控制台上的回溯,您能分享一下吗?您的
database.db
数据库中是否实际有
test
表?您还使用了相对路径,因此将在当前工作目录中打开
database.db
。这可能不是您所期望的。您实际上并没有从视图函数返回任何数据-如果您使用-1会发生什么情况。在你的
g.db.commit()和2之后添加
return'Hello World'
。将
app.run()
更改为
app.run(debug=True)