項目文件樹圖
<app.py>
# 導入所有的模塊
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
from contextlib import closing
# 配置文件
DATABASE = 'flask1.db'
ENV = 'development'
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'
# 創建應用
app = Flask(__name__)
app.config.from_object(__name__)
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().decode())
db.commit()
if __name__ == '__main__':
app.run()
報錯
>>> from app import init_db
>>> init_db()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\PycharmProjects\untitled\flask1\app.py", line 21, in init_db
with closing(connect_db()) as db:
File "E:\PycharmProjects\untitled\flask1\app.py", line 18, in connect_db
return sqlite3.connect(app.config['DATABASE'])
sqlite3.OperationalError: unable to open database file
解決方法
step1 檢查路徑
>>> import os
>>> os.getcwd()
'E:\\PycharmProjects\\untitled\\flask1'
這裏是在同一文件夾,如果不在同一文件夾需要重定向
os.chdir('E:/PycharmProjects/untitled/flask1')
step2 將py文件代碼中配置db文件前面加路徑符號
<app.py>
# 配置文件
DATABASE = './flask1.db'
此時E:/PycharmProjects/untitled/flask1下會自動創建 flask1.db 文件
注意:大部分人用的源碼裏py文件名稱是flaskr.py ,最後生成的也是flaskr.db,我這裏用的是自己命名的 flask1,如果你用的是flaskr,則把上面代碼裏的flask1.db 都替換成flaskr.db 即可