sqlalchemy是乙個關係型資料庫框架,它提供了高層的orm和底層的原生資料庫的操作。 flask-sqlalchemy是乙個簡化了sqlalchemy操作的flask擴充套件。
在flask的虛擬環境中先安裝:flask_sqlalchemy ,pymysql
pip install flask_sqlalchemy
pip install pymysql
在init.py中配置資料庫
import os
from flask import flask
from flask_sqlalchemy import sqlalchemy
from stu.views import stu
def():
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
template_dir = os.path.join(base_dir,'templates')
static_dir = os.path.join(base_dir,'static')
# 配置資料庫
# 註冊藍圖
在model.py 建立模型
from flask_sqlalchemy import sqlalchemy常用的字段型別:flask常用字段型別db = sqlalchemy()
class
student
(db.model):
s_id = db.column
(db.integer,primary_key=true,autoincrement=true)
s_name = db.column
(db.string(20),unique =true)
s_age = db.column
(db.integer,default=18)
__tablename__ = 'student'
在views.py中:
import random
from flask import blueprint, render_template, request, redirect, url_for, make_response
from stu.models import db, student
stu = blueprint('stu', __name__)
@stu.route('/')
defindex
():return render_template('index.html')
@stu.route('/score/')
defscore
(): score_list = [21, 34, 33, 45, 67, 78]
content_h2 = '少男'
content_h3 = ' 速度快解散'
return render_template('score.html', score=score_list,
content_h2=content_h2,
content_h3=content_h3)
# 建立表
@stu.route('/createtable/')
defcreate_db
(): db.create_all()
return
'建立成功'
# 刪除表
@stu.route('/droptable/')
defdrop_db
(): db.drop_all()
return
'刪除成功'
# 在資料庫建立單個學生
@stu.route('/createstu/')
defcreate_stu
(): stu = student()
stu.s_name = '小帥%d' % random.randrange(1000)
stu.s_age = '%d' % random.randrange(20)
db.session.add(stu)
try:
db.session.commit()
except:
db.session.rollback()
return
'建立學生成功'
# 一次建立多個學生 關鍵字:db.session.add_all(列表)
@stu.route('/createmoneystu/')
defcreate_money_stu
(): stu_list =
stu1 = student(username1,age1)
stu2 = student(username2,age2)
db.session.add_all(stu_list)
db.session.commit
return
'建立多個學生成功'
# 查詢所有方法
@stu.route('/stulist/')
defstu_all
():# 第一種查詢所有
stus = student.query.all()
return render_template('studentlist.html', stus=stus)
# 查詢乙個學生方法
@stu.route('/studentail/')
defstu_detail
():# 原生的sql語句查詢
# sql = 'select * from student where s_name="小帥790";'
# stus = db.session.execute(sql)
# 使用filter
# stus = student.query.filter(student.s_name == '小帥790')
# 使用filter_by
stus = student.query.filter_by(s_name='小帥399')
print(stus.first())
return render_template('studentlist.html', stus=stus)
# 更新方法
@stu.route('/updatestu/')
defupdate_stu
():# 第一種方式
# stu = student.query.filter_by(s_id=5).first()
# stu.s_name = '李二狗'
# 第二種方法
student.query.filter_by(s_id=5).update()
db.session.commit()
return redirect(url_for('stu.stu_all'))
# 刪除方法
@stu.route('/deletestu/')
defdelete_stu
(): stu = student.query.filter(student.s_id == 5).first()
db.session.delete(stu)
db.session.commit()
return redirect(url_for('stu.stu_all'))
Flask運算元據庫
flask運算元據庫 匯入flask sqlalchemy擴充套件包 更改資料庫的配置指定資料庫的連線 sqlalchemy database uri mysql 設定每次請求結束後自動提交資料中的改動 sqlalchemy commit on teardown true 設定成true,sqlal...
flask運算元據庫MySQL
注意 與sqlite不同,flask sqlalchemy並不會為mysql 主動去建立乙個database。所以需要自己手動在mysql中建立乙個相應的資料庫,然後才能使用flask sqlalchemy對相應資料進行操作。如果沒有事先建立,是不能使用mysql的。1 修改mysql密碼 mysq...
運算元據庫
python importmysqldb defmydbtest conn mysqldb.connect host localhost user root passwd sa db b4img charset utf8 cursor conn.cursor sql select from imag...