11.7 Flask flask-sqlalchemy组件

概念

把Flask和SQLAlchemy结合在一起,粘合剂

更加方便了,不再需要自己手动写链接池了

但是基础操作还是和SQLAlchemy 一样

使用方式

下载安装

pip3 install flask-sqlalchemy

链接数据库

格式

pymysql
    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

配置文件中添加

SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]:3306/yangtuoDB?charset=utf8"

SQLALCHEMY_POOL_SIZE = 10

SQLALCHEMY_MAX_OVERFLOW = 5

注册初始化数据库

函数级别

  不推荐

from flask_sqlalchemy import SQLAlchemy
from flask import FLask
app = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI‘] ="mysql://root:[email protected]/test"
db = SQLAlchemy(app)

全局

from flask_sqlalchemy import SQLAlchemy
from flask import FLask
db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    db.init_app(app)
    return app

注意

必须在导入蓝图之前

from flask_sqlalchemy import SQLAlchemy

必须要在初始化之前导入模板,不然是没办法正确得到db

from .models import *

创建生成表

在离线脚本中操作数数据库创建 create_all  drop_all

from chun import db,create_app

app = create_app()
app_ctx = app.app_context()     # app_ctx = app/g
with app_ctx:                     # __enter__,通过LocalStack放入Local中
    db.create_all()             # 调用LocalStack放入Local中获取app,再去app中获取配置

操作表

#方式一
        db.session  #会自动创建一个session
        db.session.add()
        db.session.query(models.User.id,models.User.name).all()
        db.session.commit()
        db.session.remove()
#方式二
        导入models
        models.User.query

目录结构

chun    项目名

    chun    与项目名同名的文件夹 

        static    静态文件相关

        templates    模板文件相关

        view    视图函数

            acctount.py        具体视图函数

            user.py        具体视图函数

        __init__.py        初始化文件

        models.py    数据库相关

    create_table.py        数据库创建离线脚本

    settings.py        配置文件 

chun.chun.__init__.py

用于初始化,创建DB对象,app对象

from flask import Flask
from flask_session import Session

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy() 

from .views.account import ac
from .views.user import us

from .models import *

def create_app():
    app = Flask(__name__)
    app.config.from_object(‘settings.ProConfig‘)
    app.register_blueprint(ac)
    app.register_blueprint(us)

    db.init_app(app) # 

    return app

chun.settings.py

配置文件相关存放,数据库的链接之类的

from redis import Redis

class BaseConfig(object):

    #
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]:3306/s9day122?charset=utf8"
    SQLALCHEMY_POOL_SIZE = 10
    SQLALCHEMY_MAX_OVERFLOW = 5
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    #
    pass

chun.chun.models.py

数据库表文件

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
from sqlalchemy import Integer,String,Text,Date,DateTime
from sqlalchemy import create_engine
from chun import db

class Users(db.Model):
    __tablename__ = ‘users‘

    id = Column(Integer, primary_key=True)
    name = Column(String(32), index=True, nullable=False)

chun.create_table.py

数据库离线操作脚本文件,用于 操作 app,g,db 的相关脚本

from chun import db,create_app

app = create_app()
app_ctx = app.app_context()
with app_ctx:
    db.create_all() 

class ProConfig(BaseConfig):
    pass

chun.chun.views.user.py

视图请求回应相关的文件

from flask import Blueprint
from chun import db
from chun import models
us = Blueprint(‘us‘,__name__)

@us.route(‘/index‘)
def index():
    # 使用SQLAlchemy在数据库中插入一条数据
    # db.session.add(models.Users(name=‘yangtuo‘,depart_id=1))
    # db.session.commit()
    # db.session.remove()
    result = db.session.query(models.Users).all()
    print(result)
    db.session.remove()

    return ‘Index‘

原文地址:https://www.cnblogs.com/shijieli/p/10355861.html

时间: 2024-11-06 13:40:38

11.7 Flask flask-sqlalchemy组件的相关文章

88、flask之SQLAlchemy

本篇导航: 介绍 使用 SQLAlchemy-Utils 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果. pip install sqlalchemy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 组成部分: Engine,框架的引擎 Connec

Flask框架—session组件详解

一.flask session简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件缺点: 功能单一 session是保存在浏览器中的cookie中,不安全, 大小有限制 而第三方插件flask-session可支持redis.memcached.文本等session的存储. 二.内置session处理机制 Cookie与Session 我们回顾一下cookie和session知识 Cookie Cookie意为“甜饼

flask 使用 SQLAlchemy 的两种方式

1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.py from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True db =

flask之三方组件

Flask-session Flask-session跟框架自带的session有什么区别呢~ 框架自带的session是通过请求上下文~放入到Local中的~那如果我们想把session放入别的地方怎么办呢~ 比如redis~或者数据库~等等~~Flask-session就提供了这些功能~~我们看下Flask-session怎么用~ 一.下载安装 pip install flask-session 二.导入并实例化 def create_app(): app = Flask(__name__)

flask之SQLAlchemy

SQLAlchemy 1.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果. pip3 install sqlalchemy 组成部分: Engine,框架的引擎 Connection Pooling ,数据库连接池 Dialect,选择连接数据库的DB API种类 Schema/Types,架构和类型 SQL Exprression L

python web开发-flask中sqlalchemy的使用

SqlAlchemy是一个python的ORM框架. 在flask中有一个flask-sqlalchemy的扩展,使用起来很方便. 1.       创建一个sqlalchemy的Model模块 创建一个models.py的模块 创建model的时候,首先引入flask-sqlalchemy的扩展 from flask import Flask from flask_sqlalchemy import SQLAlchemy 然后初始化app和sqlalchemy app = Flask(__na

flask mysql sqlalchemy教程

1.建立models_base文件 连接数据库 import logging import ast import simplejson as json import time from flask_sqlalchemy import SQLAlchemy from flask import Flask from commons.entity import rds_mongo app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] =

87、flask之flask-script组件

Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务:使得脚本和系统分开: Flask Script和Flask本身的工作方式类似,只需定义和添加从命令行中被Manager实例调用的命令: 官方文档:http://flask-script.readthedocs.io/en/latest/ 1.创建并运行命令 首先,创建一个Python模板运行命令

【Flask】Sqlalchemy 外键

### 外键:使用SQLAlchemy创建外键非常简单.在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了.从表中外键的字段,必须和父表的主键字段类型保持一致.示例代码如下: 1 from sqlalchemy import create_engine, Column, Integer, String, Text, ForeignKey 2 3 from sqlalchemy.ext.declarative import declarative_base 4 from sqlal

【Flask】Sqlalchemy group_by having

### group_by:根据某个字段进行分组.比如想要根据性别进行分组,来统计每个分组分别有多少人 ### having: having是对查找结果进一步过滤.比如只想要看未成年人的数量,那么可以首先对年龄进行分组统计人数,然后再对分组进行having过滤.示例代码如下: 1 # coding:utf-8 2 # Author: liangjun.chen 3 4 from datetime import datetime 5 from sqlalchemy import create_eng