坚持Flask教程第3步

Tha*_*ser 12 python sqlite flask python-2.7

在Flask教程之后,运行Win 7,Python 2.7.3,virtualenv,我陷入了第3步:创建数据库http://flask.pocoo.org/docs/tutorial/dbinit/#tutorial-dbinit

可以通过将schema.sql文件传递到sqlite3命令来创建这样的模式,如下所示:

sqlite3 /tmp/flaskr.db < schema.sql
Run Code Online (Sandbox Code Playgroud)

如何运行此命令,因为CMD <venv>返回:

"sqlite3"未被识别为内部或外部命令,可操作程序或批处理文件.

这一步是否必要?

Folder Project,2个文件schema.sql和flaskr.py.

schema.sql文件

drop table if exists entries;
create table entries (
  id integer primary key autoincrement,
  title string not null,
  text string not null
);
Run Code Online (Sandbox Code Playgroud)

flaskr.py

# all the imports
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, \
abort, render_template, flash
from contextlib import closing
# configuration
DATABASE = '/tmp/flaskr.db'
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'

# create our little application :)
app = Flask(__name__)
app.config.from_object(__name__)
app.config.from_envvar('FLASKR_SETTINGS', silent=True)


def connect_db():
    return sqlite3.connect(app.config['DATABASE'])

def init_db():
    with closing(connect_db()) as db:
        with app.open_resource('schema.sql') as f:
            db.cursor().executescript(f.read())
        db.commit()

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

< venv > python

>>> from flaskr import init_db
>>> init_db()
Trackeback <most recent call last>:
File "<stdin>", line 1, in <module>
File "flaskr.py", line 24, in init_db
  with closing (connect_db()) as db: 
File "flaskr.py", line 21, in connect_db
return sqlite3.connect(app.config['DATABASE'])
sqlite3.OperationalError: unable to open database.
Run Code Online (Sandbox Code Playgroud)

cod*_*eek 8

您对Windows和UNIX文件系统感到困惑.

找出sqllite.exe计算机上存在的文件.让我们说它在C:\sqllite.然后,您还需要确定将在何处创建数据库文件./tmp/flaskr.db适用于UNIX文件系统.在Windows上,您应该提供确切的路径或在当前的工作目录中.让我们说它是C:\flasktutorial.

为安全起见,您可能需要先创建一个空白flaskr.db文件.

Open a notepad and create the blank file at `C:\flasktutorial\flaskr.db`
Run Code Online (Sandbox Code Playgroud)

现在你可以运行:

C:\sqllite\sqllite.exe C:\flasktutorial\flaskr.db < schema.sql
Run Code Online (Sandbox Code Playgroud)

还要确保在flaskr.py文件中将DATABASE更改为:

DATABASE = 'C:\flasktutorial\flaskr.db'
Run Code Online (Sandbox Code Playgroud)