2013-04-01 67 views
11

繼瓶教程,運行Windows 7,Python的2.7.3,virtualenv中,和我被困在第3步:創建數據庫http://flask.pocoo.org/docs/tutorial/dbinit/#tutorial-dbinit停留在瓶教程步驟3

Such a schema can be created by piping the schema.sql file into the sqlite3 command as follows:

sqlite3 /tmp/flaskr.db < schema.sql 

如何運行此命令,因爲CMD < venv>回報:

"sqlite3" is not recognized as internal or external command, operable program or batch file.

此步驟是否必要?

文件夾項目,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 
); 

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() 

<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. 
+1

命令行工具在Windows上稱爲'sqlite3.exe'。 –

+1

'sqlite3.OperationalError'會由SQLite無法*寫*已配置的數據庫文件(如果尚不存在,則會創建一個)。 –

+0

已下載sqlite3.exe,sqlitie> sqlite3 /tmp/flaskr.db 任何幫助? –

回答

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` 

現在你可以運行:

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

另外,還要確保你的flaskr.py文件,數據庫更改爲:

DATABASE = 'C:\flasktutorial\flaskr.db' 
+0

爲了說明而改變工作目錄。我究竟做錯了什麼?圖片相關:http://s8.postimg.org/j6oovqlx1/picture.png –

+0

存儲的schema.sql文件在哪裏?它是否也在當前的工作目錄?我還更新了我的答案,首先創建flaskr.db文件作爲安全措施。 – codegeek

+0

是的,它在同一個工作文件夾中。 –

1

作爲喲ü可以從錯誤日誌觀察,錯誤來了,而連接DB

sqlite3.OperationalError: unable to open database.

而且,由於這一步失敗對你來說,

sqlite3 /tmp/flaskr.db < schema.sql

您可以輕鬆地解釋說這一步是必要的。 現在要解決這個錯誤,只是你必須安裝sqlite3的,在Ubuntu可以安裝sqlite3的是,

apt-get install sqlite3

安裝後,你的程序將正常預期。

+2

這是* Windows *。如果數據庫文件還不存在(即使沒有模式),SQLite *會創建*數據庫文件,所以其他內容是錯誤的。 –

+0

除了在'OS X'上使用'pip install sqlite3'外,這是我的例子。 – MikeiLL

1

我不知道如果這些提示直接適用於採購訂單,但他們將我帶到這裏,所以也許會有所幫助。

務必檢查flaskr目錄下的README文件,該文件指定從命令行運行flask --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,將安裝最新版本。

4

您是否激活了virtualenv並安裝了燒瓶?

燒瓶默認應該有sqlite3。我得到不過以下錯誤:

File "flaskr.py", line 26, in connect_db 
    return sqlite3.connect(app.config['DATABASE']) 
sqlite3.OperationalError: unable to open database file` 

爲了解決這個問題,我不得不做以下(在Windows中):

  1. 變化DATABASE = '/tmp/flaskr.db'DATABASE = '.\\tmp\\flaskr.db'
  2. 創建當前文件夾(flaskr)TMP文件夾
  3. 在tmp中創建一個空的flaskr.db文件

之後,它的工作爲我而存在。

+1

非常感謝,完全相同的問題,並且完美地工作。 – bkmoney

0

僅適用於Linux用戶:

首先,你從here安裝SQLITE3。

安裝之後,你需要創建一個名爲flaskr.db文件,這個文件的位置是要/myproject的/ VENV /斌/ flaskr/tmp目錄

下一步運行命令

sqlite3 /home/ddserver/myproject/venv/bin/flaskr/tmp/flaskr.db<schema.sql 

我把文件地址從家裏。

下一步是開始蟒殼,運行該代碼

>>> from flaskr import init_db 
>>> init_db() 

那它。