13---在flask中使用mysql数据库

本文介绍了如何在Flask应用中连接并操作MySQL数据库,包括安装flask-mysqldb、配置数据库URI、创建表以及进行数据交互。特别提示,配置SQLALCHEMY_DATABASE_URI时,末尾字母必须是'I'而非'L'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


pip install flask-sqlalchemy

要链接mysql,仍需要安装flask-mysqldb
pip install flask-mysqldb

对比

django是在setting中配置的
flask中:

# 设置链接数据库的url
app.config['SQLALCHEMY_DATABASE_URL']='mysql://root:mysql@127.0.0.1:3306/test'
# 设置每次请求结束后会自动提交数据库的改动
app.config['SQLACHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Ture
# 查询时会显示原始sql语句
app.comfig['SQLALCHEMY_ECHO'] = True
db = SQLALchemy(app)

初始化配置

# encoding=utf-8
__author__ = "zhangyue"

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)

class Config(object):
    """配置参数"""
    # sqlalchemy的配置参数
    SQLALCHEMY_DATABASE_URL = "mysql://root:mysql@127.0.0.1:3306/test3"
    # 设置SQLALCHEMY自动跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

app.config.from_object(Config)
# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)

@app.route("/")
def index():
    return "index page"

if __name__ == '__main__':
    app.run(debug=True)

创建两个表demo

user与role表关联role_id = db.Column(db.Integer,db.ForeignKey("tbl_roles.id"))

# encoding=utf-8
__author__ = "zhangyue"

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)

class Config(object):
    """配置参数"""
    # sqlalchemy的配置参数
    SQLALCHEMY_DATABASE_URL = "mysql://root:mysql@127.0.0.1:3306/test3"
    # 设置SQLALCHEMY自动跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

app.config.from_object(Config)
# 创建数据库sqlalchemy工具对象
db = SQLAlchemy(app)

class User(db.Model):
    """用户表"""
    __tablename__ = "tbl_users"
    id = db.Column(db.Integer,primary_key=True)# 主键,整型的主键会默认设置为自增主键
    name = db.Column(db.String(64),unique=True)
    email = db.Column(db.String(128),unique=True)
    password = db.Column(db.String(128))
    role_id = db.Column(db.Integer,db.ForeignKey("tbl_roles.id"))

class Role(db.Model):
    """用户身份表"""
    __tablename__ = "tbl_roles"
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(32),unique=True)
    users = db.relationship("User",backref="role")

@app.route("/")
def index():
    return "index page"

if __name__ == '__main__':
    app.run(debug=True)

注意!!!

前面有错误,配置那块

class Config(object):
    """配置参数"""
    # sqlalchemy的配置参数
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/test3"
    # 设置SQLALCHEMY自动跟踪数据库
    SQLALCHEMY_TRACK_MODIFICATIONS = True

SQLALCHEMY_DATABASE_URI最后一个字母是I不是L


向两个表中添加数据,很简单的交互

if __name__ == '__main__':
    # 通过db.drop_all;方式清楚现在链接的数据库中所有的数据
    db.drop_all()
    # 创建所有的表
    db.create_all()
    # app.run(debug=True)
    # 创建对象
    role1 = Role(name='admin')
    # session记录对象任务
    db.session.add(role1)
    # 提交任务到数据库中
    db.session.commit()
    role2 = Role(name='user')
    db.session.add(role2)
    # 提交任务到数据库中
    db.session.commit()
    us1 = User(name='wang',email='wang@163.com',password='123456',role_id=role1.id)
    us2 = User(name='wa', email='wg@163.com', password='123456', role_id=role1.id)
    us3 = User(name='wg', email='ng@163.com', password='123456', role_id=role2.id)
    db.session.add_all([us1,us2,us3])
    db.session.commit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值