sqlalchemy是一個關系型數據庫框架,它提供了高層的ORM 和底層的原生數據庫的操作。
sqlalchemy實際上是對數據庫的抽象,通過python對象操作數據庫,提高開發效率。
安裝 flask_sqlalchemy
pip install flask-sqlalchemy
如果鏈接是MySQL數據庫,需要安裝mysqldb
pip install flask-myasldb
數據庫連接設置
數據庫使用url指定時,程序使用的數據庫必須保存到flask配置對象的SQLALCHEMY_BATABASE_URL建中
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'
動態追蹤修改設置,如果沒有設置提示警告
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
查詢時顯示原始SQL數據
app.config['SQLALCHEMY_ECHO'] = True
其他設置

當配置完成時,需要去MySQL中創建項目中要使用的數據庫
進入MySQL命令 : mysql -uroot -p(密碼) (密碼一般是mysql)
連接其他數據庫
完整連接url 列表請跳轉到sqlalchemy下面的文檔,常見的連接字符串有:
Postgres, Mysql; Oracle; SQLite(以sqlite開頭是四個斜線)
例:posthresql://scott:localhost/mydatabase
sqlite:////scott:localhost/mydatabase
mqlalchemy常用的字段類型

mqlalchemy常用的關系選項

mqlalchemy常用的列選項

數據庫的基本操作
在數據庫中可以進行增刪改查操作,數據庫分為原生的mql 和flask_sqlalchemy 數據庫。
在flask_sqlalchemy 數據庫中會話使用 db.session表示,在把數據寫入數據庫前,要先將數據添加到會話中調用commit()方法提交,查詢操作是通過query對象操作數據
首先要導入模塊
from flask import Flask ,render_template
#導入第三方連接庫
from flask_sqlalchemy import SQLAlchemy
#創建對象
app = Flask(__name__)
#載入配置文件
app.config.from_pyfile('config.ini')
# #指定數據庫連接還有庫名
# app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'
#制定配置,用來省略操作
# app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
#實例化一個數據庫對象
db = SQLAlchemy(app)
#建立一個類來影射數據庫表,將數據庫的模型作為參數傳入
class User(db.Model):
#聲明表名
_tablename_ = 'user'
#建立函數字段
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(200))
password = db.Column(db.String(200))
#數據庫入庫操作
@app.route('/')
def index():
#增,入庫邏輯
#聲明對象
user = User(name='你好你好',password='456456')
#調用添加方法
db.session.add(user)
# #提交入庫
# db.session.commit()
return '這里是首業'
#數據庫刪除操作
@app.route('/del')
def del_user():
#根據摸個字段作刪除,filter_by蕾仕於where條件限定
#翻譯為:delete from user where id= 1
User.query.filter_by(id = 1).delete()
return '這里是刪除操作'
#數據庫改操作(改)
@app.route('/edit')
def edit_user():
#根據摸個字段做修改操作
#翻譯為 update user set name = '張三' where id = 8
User.query.filter_by(id = 8).update({'name':'張三'})
#使用原生語句進行修改操作
db.session.execute("update user set password = '123321' where id = 9")
return '這里是改操作'
#數據庫的查詢操作(查)
@app.route('/select')
def select_user():
#簡單的全量查詢
##翻譯為:select * from user
ulist = User.query.all()
print(ulist)
for i in ulist:
print(i.name)
#直取一條
ulist = User.query.first()
print(ulist)
#使用原生的sql語句
#翻譯以為: select * from user order by desc limit 1,2
# items = db.session.execute('select * from user order by id desc limit 1,2')
items = db.session.execute('select * from user ')
#將結果集強轉為list
items = list(items)
return render_template('day5.html',items = items)
if __name__ == "__main__":
app.run()