Python Flask 使用数据库

复制代码
pip install flask_sqlalchemy

官方文档:

Flask-SQLAlchemy --- Flask-SQLAlchemy Documentation (3.1.x)

为了不报错 也 需要导入另外两个库

复制代码
# pip install flask_sqlalchemy
# pip install mysqlclient

完整代码

复制代码
import os

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# pip install PyMySQL
# pip install flask_sqlalchemy
# pip install mysqlclient
app = Flask(__name__)


class Config:
    # 配置数据库的链接
    SQLALCHEMY_DATABASE_URI = os.environ['MYSQL_ALL']
    # 动态追踪修改设置,如未设置只会提示警告
    SQLALCHEMY_TRACK_MODIFICATIONS = False


app.config.from_object(Config)
db = SQLAlchemy(app)


class Role(db.Model):
    '''角色表'''
    __tablename__ = 'test_la_role'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)


class User(db.Model):
    '''用户表'''
    __tablename__ = 'test_la_user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128), unique=True)
    password = db.Column(db.String(128))
    role_id = db.Column(db.Integer, db.ForeignKey('test_la_role.id'))

if __name__ == '__main__':
    with app.app_context():  # 激活应用上下文
        # 创建数据库引擎,如果是首次运行,需要创建数据库结构
        db.create_all()

        # 插入初始数据
        if not Role.query.first():
            role1 = Role(name='admin')
            db.session.add(role1)
            db.session.commit()

            role2 = Role(name='user')
            db.session.add(role2)
            db.session.commit()

            user1 = User(name='admin_user', password='admin123', role_id=role1.id)
            user2 = User(name='regular_user', password='user123', role_id=role2.id)
            db.session.add_all([user1, user2])
            db.session.commit()

    app.run(debug=True)

要创建表并插入数据,您已经有了基本框架和模型定义,接下来需要确保数据库连接配置正确,并且取消注释相关的操作代码。我将按照您的代码结构提供一个完善后的示例,包括创建表和插入初始数据的步骤。

确保您的数据库已经创建好了,且MYSQL_ALL环境变量正确设置为数据库连接字符串。例如,对于MySQL,它可能看起来像这样:

复制代码
pymysql://username:password@localhost:port/dbname
相关推荐
benchmark_cc1 分钟前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库5 分钟前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H9 分钟前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒24 分钟前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP38 分钟前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
2601_962382431 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅2 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
江畔柳前堤2 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung2 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
veminhe2 小时前
python调用接口获取网络信息
python