12

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

CMD < venv > が返すため、このコマンドを実行する方法:

「sqlite3」は、内部または外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

この手順は必要ですか?

フォルダー Project、2 つのファイル schema.sql およびflaskr.py。

スキーマ.sql

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

フラスコ.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()

< 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.
4

5 に答える 5

8

Windows と UNIX のファイルシステムを混同しています。

sqllite.exeファイルがコンピュータ上のどこに存在するかを調べます。にあるとしましょうC:\sqllite。次に、データベース ファイルを作成する場所も決定する必要があります。/tmp/flaskr.dbUNIXファイルシステム用です。Windows では、正確なパスまたは現在の作業ディレクトリを指定する必要があります。そうだとしましょうC:\flasktutorial

安全のために、最初に空のflaskr.dbファイルを作成することをお勧めします。

Open a notepad and create the blank file at `C:\flasktutorial\flaskr.db`

これで実行できます:

C:\sqllite\sqllite.exe C:\flasktutorial\flaskr.db < schema.sql

また、flaskr.py ファイルで、DATABASE を次のように変更してください。

DATABASE = 'C:\flasktutorial\flaskr.db'
于 2013-04-01T13:45:26.253 に答える
1

エラー ログからわかるように、DB の接続中にエラーが発生しています。

sqlite3.OperationalError: データベースを開けません。

このステップが失敗したため、

sqlite3 /tmp/flaskr.db < schema.sql

このステップが必要であることは容易に理解できます。このエラーを解決するには、単に sqlite3 をインストールする必要があります。ubuntu では、sqlite3 を次のようにインストールできます。

apt-get インストール sqlite3

インストール後、プログラムは期待どおりに正常に動作します。

于 2013-04-01T09:57:04.110 に答える
1

これらのヒントが PO に直接適用できるかどうかはわかりませんが、ここにたどり着いたので、役立つかもしれません。

コマンドラインからの実行を指定するディレクトリREADME内のファイルを必ず確認してください。flaskrflask --app=flaskr initdb

これが を返す場合AttributeError: 'Flask' object has no attribute 'cli'、インストールされていないことが原因である可能性がありますclick

コマンドが を返しflask: command not foundた場合、古いバージョンの Flash がインストールされていることが原因である可能性がありpip install flaskます。

今日の時点で、このコマンドpip install https://github.com/mitsuhiko/flask/tarball/masterは最新バージョンをインストールします。

于 2014-09-17T20:54:46.007 に答える