在flask中使用SQLAlchemy連線sqllite資料庫
阿新 • • 發佈:2018-12-03
設定資料庫路徑非常重要:
方法:
1 配置資料庫
basedir= os.path.abspath(os.path.dirname(__file__)) #獲取當前檔案的絕對路徑 app = Flask(__name__)
# 拼接資料庫的URL路徑
# os.path.join 把basedir和data.sqlite的路徑拼接起來# # data.sqlite為資料庫檔案,若該資料夾下沒有這個檔案會自動建立 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+ os.path.join(basedir,'data.sqlite')
# 配置這個鍵之後,每次請求結束之後都會提交資料庫的變動
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] =True db = SQLAlchemy(app)
2 定義模型
# 定義模型
1 # db.Model是一個基類 2 class Role(db.Model): 3 # 對應的資料庫表明 4 __tablename__ ='roles' 5 # 設定欄位格式 6 id = db.Column(db.Integer,primary_key=True)7 name = db.Column(db.String(64),unique=True) 8 # 建立與其他表的關係 9 users = db.relationship('User',backref='role',lazy='dynamic') 10 11 def __repr__(self): 12 return ''%self.name 13 14 class User(db.Model): 15 __tablename__ ='users' 16 id = db.Column(db.Integer,primary_key=True)17 username= db.Column(db.String(64),unique=True,index=True) 18 role_id = db.Column(db.Integer,db.ForeignKey('roles.id')) 19 20 def __repr__(self): 21 return''%self.username
3 操作資料庫
db.create_all()
總結:
1 除錯程式碼遇到問題,要先把程式碼本身什麼意思搞清楚,再想解決辦法
在除錯資料庫連線時遇到:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
網上說可能是路徑不對,我就開始修改
'sqlite:///'
這部分的內容,新增各種路徑,然而卻沒有注意到這部分的內容
os.path.join(basedir,'data.sqlite')
這部分就是檔案的路徑了,我在 'sqlite:///'怎麼加路徑都不可能正確啊,吸取這次教訓
2 遇到問題多看官方的api文件,基本的問題上面都有說明,在網上看的答案不一定適合現在的版本
3 在設定路徑時,路徑中不能有空格符,有空格的符的話也會報錯
作者:思考者01
連結:https://www.jianshu.com/p/61bcd016bc6b
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。