我正在学习Flask's website
为了给您提供一些上下文,我正在flaskapp目录下工作,其中包含flaskr.py文件和schema.sql。virtualenv被激活。
schema.sql是

drop table if exists entries;
create table entries (
id integer primary key autoincrement,
title text not null,
text text not null
);

烧瓶,不需要的部分修剪:
DATABASE = '/tmp/flaskr.db'

def connect_db():
    return sqlite3.connect(app.config['DATABASE'])
def init_db():
    with closing(connect_db()) as db:
        with app.open_resource('schema.sql', mode='r') as f:
            db.cursor().executescript(f.read())
            db.commit()

教程中有关的部分说-
Flaskr是一个数据库驱动的应用程序,如前所述,更准确地说,是一个由关系数据库系统驱动的应用程序。这样的系统需要一个模式来告诉他们如何存储这些信息。因此,在第一次启动服务器之前,创建该模式非常重要。
通过将schema.sql文件通过管道发送到sqlite3命令中,可以创建这样的架构,如下所示:
sqlite3 /tmp/flaskr.db < schema.sql

我很确定我已经找到了问题所在,因为在运行时,错误是:
File "C:\Users\Hp1\Desktop\flaskr\flaskrapp\flaskr.py", line 19,
in connect_db
return sqlite3.connect(app.config['DATABASE'])
sqlite3.OperationalError: unable to open database file

我flaskr.py文件中的“DATABASE”是“/tmp/flaskr.db”。所以我在工作目录中创建了一个空flaskr db.db文件,并替换了flaskr.py数据库值中的“tmp/flaskr.db”。但是我不能使用管道操作,因为它是为Linux提供的。我在窗户里怎么做?
我在电脑上的任何地方都找不到sqlite3.exe。

最佳答案

一种快速的方法是使用现有的Python安装并手工完成,只是为了教程的目的。

>>> import sqlite3
>>> conn = sqlite3.connect("flaskr.db") # Replace this with the path to the flaskr.db in your working directory
>>> c = conn.cursor()
>>> c.execute("drop table if exists entries;")
<sqlite3.Cursor object at 0x0000000002C3BB90>
>>> c.execute("""create table entries (
... id integer primary key autoincrement,
... title text not null,
... text text not null
... );""")
<sqlite3.Cursor object at 0x0000000002C3BB90>
>>>

如果您需要更多地与sqlite3数据库交互,请考虑从SQLite网站安装和学习这些工具:https://www.sqlite.org/download.html——您需要SQLite-tools-win32-x86-3110100.zip。
有一个命令行sqlite应用程序与这些工具一起分发,这些工具将用于教程中的管道示例。

关于python - 在Linux中将模式管道传输到sqlite到Windows(Flask)的对应方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35833927/

10-10 15:06