1. 程式人生 > >在flask中使用SQLAlchemy連線sqllite資料庫

在flask中使用SQLAlchemy連線sqllite資料庫

設定資料庫路徑非常重要:

方法:

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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。