flask連線和運算元據庫

2021-08-20 01:26:38 字數 3703 閱讀 5663

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

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'

常用的字段型別:flask常用字段型別

在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...