方法:
1 配置數(shù)據(jù)庫
basedir= os.path.abspath(os.path.dirname(__file__)) #獲取當(dāng)前文件的絕對路徑
app = Flask(__name__)
# 拼接數(shù)據(jù)庫的URL路徑
#? os.path.join 把basedir和data.sqlite的路徑拼接起來#
# data.sqlite為數(shù)據(jù)庫文件,若該文件夾下沒有這個文件會自動創(chuàng)建
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///'+ os.path.join(basedir,'data.sqlite')
# 配置這個鍵之后贫母,每次請求結(jié)束之后都會提交數(shù)據(jù)庫的變動
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] =True
db = SQLAlchemy(app)
2 定義模型
# 定義模型
# db.Model是一個基類
classRole(db.Model):
# 對應(yīng)的數(shù)據(jù)庫表明
__tablename__ ='roles'
# 設(shè)置字段格式
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(64),unique=True)
# 創(chuàng)建與其他表的關(guān)系
users = db.relationship('User',backref='role',lazy='dynamic')
def__repr__(self):
return''%self.name
classUser(db.Model):
__tablename__ ='users'
id = db.Column(db.Integer,primary_key=True)
username= db.Column(db.String(64),unique=True,index=True)
role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))
def__repr__(self):
return''%self.username
3 操作數(shù)據(jù)庫
db.create_all()
總結(jié):
1 調(diào)試代碼遇到問題令哟,要先把代碼本身什么意思搞清楚,再想解決辦法
在調(diào)試數(shù)據(jù)庫連接時遇到:
sqlalchemy.exc.OperationalError:?(sqlite3.OperationalError)?unable?to?open?database?file
網(wǎng)上說可能是路徑不對,我就開始修改
'sqlite:///'
這部分的內(nèi)容,添加各種路徑,然而卻沒有注意到這部分的內(nèi)容
os.path.join(basedir,'data.sqlite')
這部分就是文件的路徑了呼伸,我在 'sqlite:///'怎么加路徑都不可能正確啊,吸取這次教訓(xùn)
2 遇到問題多看官方的api文檔钝尸,基本的問題上面都有說明括享,在網(wǎng)上看的答案不一定適合現(xiàn)在的版本
3 在設(shè)置路徑時,路徑中不能有空格符珍促,有空格的符的話也會報錯