flask寫入數據庫


 

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()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM