首页 > 数据库 >flask-sqlalchemy模块的使用

flask-sqlalchemy模块的使用

时间:2024-03-11 15:55:35浏览次数:17  
标签:__ sqlalchemy name flask app db 模块 import

flask-sqlalchemy集成到flask中

1 下载模块

pip install flask-sqlalchemy --upgrade

2 __init__文件中导入模块

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__, template_folder='../templates', static_folder='../static')

app.config.from_pyfile('./settings.py')

# 等到app和db都创建完再导入
from .views.user import bp_user
app.register_blueprint(bp_user)
-------
# 实例化得到对象
db = SQLAlchemy()

# 将db注册到app中
db.init_app(app)
-------
# 以上两步可以合并为:
db = SQLAlchemy(app)

3 视图函数中使用session查询表数据

from flask import Blueprint, render_template, jsonify
from src.models import User

bp_user = Blueprint('user', __name__)
from src import db

@bp_user.route('/')
def index():
    # 把用户表中所有数据都查出来,返回给前端
    res = db.session.query(User).filter(User.id >= 1).all()
    # 不行 json序列化,只能序列化 数字,字符串,布尔,列表,和字典
    # res 列表套对象---》不能序列化
    l = []
    for item in res:
        l.append({'name': item.name, 'email': item.email})
    return jsonify({'code': 100, 'msg': "成功", 'results': l})

4 models.py 中继承 db.Model

import datetime
from . import db

class User(db.Model):
    __tablename__ = 'users'  # 表名
    # 写字段
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # id 主键
    name = db.Column(db.String(32), index=True, nullable=False)  # name列,索引,不可为空
    email = db.Column(db.String(32), unique=True)
    # datetime.datetime.now不能加括号,加了括号,以后永远是当前时间
    ctime = db.Column(db.DateTime, default=datetime.datetime.now)
    extra = db.Column(db.Text)

    def __str__(self):
        return self.name

    def __repr__(self):
        return self.name

5 配置文件中加入

SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]:3306/sqlalchemy03?charset=utf8"
SQLALCHEMY_POOL_SIZE = 5
SQLALCHEMY_POOL_TIMEOUT = 30
SQLALCHEMY_POOL_RECYCLE = -1
# 追踪对象的修改并且发送信号
SQLALCHEMY_TRACK_MODIFICATIONS = False

标签:__,sqlalchemy,name,flask,app,db,模块,import
From: https://www.cnblogs.com/wellplayed/p/18066248

相关文章

  • 解决问题:HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相
      缺少AspNetCoreModuleV2模块,下载安装即可。ps:.netframework是可以直接发布,IIS指定就能正常访问的。但aspnetcore项目略有不同,要额外安装一个模块,如果没有安装,会报HTTP错误500.19-InternalServerError的错。1、官方版本地址:https://dotnet.microsoft.com/down......
  • sqlalchemy高级查询操作
    连接数据库准备fromsqlalchemy.ormimportsessionmakerfromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportscoped_sessionfrommodelsimportUsers,Person,Hobby,Boy,Girlfromsqlalchemy.sqlimporttextengine=create_engine("mysql+pymysql://roo......
  • WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-C1-设备作为Modbus Slave实现RS485 Modbus RT
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节测试的是让设备作为Modbus......
  • Swoole 源码分析之 epoll 多路复用模块
    首发原文链接:Swoole源码分析之HttpServer模块大家好,我是码农先森。引言在传统的IO模型中,每个IO操作都需要创建一个单独的线程或进程来处理,这样的操作会导致系统资源的大量消耗和管理开销。而IO多路复用技术通过使用少量的线程或进程同时监视多个IO事件,能够更高效地处理大......
  • flask08_days
    一对多关系 关系importdatetimefromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportdeclarative_base,relationshipfromsqlalchemyimportColumn,Integer,String,Text,ForeignKey,DateTime,UniqueConstraint,IndexBase=declarative_base()#......
  • python获取某个包下面的所有子模块
    deflist_submodules(self,package_path):"""递归地列出给定包路径下的所有子模块"""all_submodules=[]#遍历包路径下的所有文件/目录forimporter,modname,ispkginpkgutil.iter_modules([package_path]):full_......
  • Jetty的http-forwarded模块
    启用http-forwarded模块,执行如下命令:java-jar$JETTY_HOME/start.jar--add-modules=http-forwarded命令的输出,如下:INFO:http-forwardedinitializedin${jetty.base}/start.d/http-forwarded.iniINFO:Basedirectorywasmodifiedhttp-forwarded模块的配置文件$J......
  • Jetty的http2模块
    启用http2模块,执行如下命令:java-jar$JETTY_HOME/start.jar--add-modules=http2命令的输出,如下:INFO:http2initializedin${jetty.base}/start.d/http2.iniINFO:Basedirectorywasmodifiedhttp2模块的配置文件$JETTY_BASE/start.d/http2.ini,内容如下:......
  • sqlalchemy关系操作
    一对多关系models表创建importdatetimefromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportdeclarative_base,relationshipfromsqlalchemyimportColumn,Integer,String,Text,ForeignKey,DateTime,UniqueConstraint,IndexBase=declarative_base......
  • 邮箱发送模块
    注入依赖jdk17springboot3<!--发送电子邮件--><dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>application配置server:port:9999#......