通過幾天的瞭解咱們以及對Flask有了初步的認識,在學習完表單後咱們來看看數據庫,數據庫想必都不陌生吧,可是在python中咱們能夠用pymysql來連接,但在Flask中咱們如何來連接數據庫呢?首先在鏈接數據庫前先引入一個SQLAlchemy,我來介紹介紹。html
SQLALchemy 其實是對數據庫的抽象,讓開發者不用直接和 SQL 語句打交道,而是經過 Python 對象來操做數據庫,在捨棄一些性能開銷的同時,換來的是開發效率的較大提高python
SQLAlchemy是一個關係型數據庫框架,它提供了高層的 ORM 和底層的原生數據庫的操做。flask-sqlalchemy 是一個簡化了 SQLAlchemy 操做的flask擴展。mysql
下面來講一個如何安裝SQLAlchemy :sql
安裝 flask-sqlalchemy:數據庫
pip install flask-sqlalchemy編程
若是鏈接的是 mysql 數據庫,須要安裝 mysqldb:flask
pip install flask-mysqldbsession
數據庫可想而知,確定離不開增~刪~改~查,下邊來簡單介紹一下:oracle
上代碼:app
# -*- encoding: utf-8 -*-
from flask import Flask,render_template
#導入第三方連接庫aql點金數
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('/select')
def select_user():
#簡單的全量查詢
#翻譯爲 select * from user
# ulist = User.query.all()
# for i in ulist:
# print(i.name)
# #只取一條
# #翻譯爲 select * from user limit 1
# ulist = User.query.first()
# print(ulist.name)
#使用原生的sql語句(查)
#翻譯爲 select * from user order by id desc limit 1,2
item = db.session.execute('select * from user order by id desc limit 1,2')
#將結果集強轉爲list
item = list(item)
print(item)
#使用原生語句進行修改操做
# db.session.execute('update user set password ="321000" where id = 6 ')
#將動態數據傳輸給模板
return render_template('sql.html',item=item)
這裏跳轉的的網頁又本身隨意定義一個模塊
#數據庫的修改操做(改)
@app.route('/edit')
def edit_user():
#根據字段作修改操做
#翻譯爲 update user set name='張三' where id=4
User.query.filter_by(id = 4).update({'name':'張三'})
return '這裏是修改'
#數據庫的刪除操做(刪)
@app.route('/del')
def del_user():
#根據某個字段作刪除,filter_by 能夠理解爲where條件限定
#翻譯爲 delete from user where id=1
User.query.filter_by(id = 3).delete()
User.query.filter_by()
return '這裏是刪除操做'
#數據庫的入庫操做(增)
@app.route('/')
def index():
#增,入庫邏輯
#聲明對象
user = User(name='隔壁老王',password='123123')
#調用添加方法
db.session.add(user)
#提交入庫
# db.session.commit()
return '這裏是首頁'
if __name__ == "__main__":
app.run()
上邊代碼中提到了return中返回的模板文件,實現動態的數據展現,簡單代碼以下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>動態數據展現</title> <style> table{ background-color:blueviolet; border: solid 3px gold; padding: 10px; } </style> </head> <body> <table> {# 對數據進行p遍歷輸出 #} {% for i in item%} <tr> <td>{{i.id}}</td> </tr> <tr> <td>{{i.name}}</td> </tr> <tr> <td>{{i.password}}</td> </tr> {% endfor %} </table> </body> </html>
以上就是flask鏈接數據庫的增刪改查
以上又兩種數據庫的增刪改查,SQLAlchemy若是不習慣能夠選擇原生的代碼
原生的格式爲 :