flask数据模型库配置和使用

本文详细介绍如何在Python环境下利用Flask框架结合SQLAlchemy库进行数据库操作,包括配置数据库连接、创建数据模型、以及实现基本的CRUD操作。通过实例演示,读者可以快速掌握在Flask应用中集成数据库的方法。

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

flask数据模型配置和使用

环境:python3.6,pymysql,flask,flask-alchemy,mysql5.6

1    首先在mysql创建好一个数据库.

2    安装好这几个安装包.

3    设置配置信息,创建一个config.ini

```
[db]
NAME=test               # 数据库帐号
PASSWD=test          # 数据库密码
IPADDR=192.168.9.224  #连接地址
PORT=3306             # 端口
DATABASE=test      # 数据库
```

4    导入配置信息:

```
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import configparser
#--------------------------导入配置-------------------------
cf = configparser.ConfigParser()
cf.read('conf.ini')
NAME  =cf.get('db','NAME')
PASSWORD = cf.get('db','PASSWORD')
IPADDR = cf.get('db','IPADDR')
DATABASE = cf.get('db','DATABASE')

app=Flask(__name__)
#pymysql + mysql是这样用.注意是URI,
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://%s:%s@%s/%s' %(NAME,PASSWORD,IPADDR,DATABASE)

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db=SQLAlchemy(app)
#-----------------------------创建模型------------------------
class CreateTb(db.Model):
    __tablename__ = 'createtb'
    __table_args__ = {
        # ‘mysql_engine‘: ‘InnoDB‘,   # 指定表的引擎
        'mysql_charset': 'utf8'     # 指定表的编码格式
    }
    id =db.Column(db.Integer,primary_key=True,autoincrement=True)
    name = db.Column(db.String(30),unique=True)
    addr = db.Column(db.String(30),unique=True)

    def __init__(self,name,addr):
        self.name = name
        self.addr = addr

    def __repr__(self):
        return '<name %r>' %self.name


def db_init():
    db.create_all()

db_init()

#-----------------------------编写视图------------------
@app.route('/')
def hello():
    return 'hello flask'

if __name__ == '__main__':
    app.run()
    app.debug = True
#----------------------最后直接运行,然后去数据库查看是否成功创建表,一般没问题.---
```

导入配置文件的第二种方式:

```
### Flask-SQLAlchemy的使用:
1. 初始化和设置数据库配置信息:
* 使用flask_sqlalchemy中的SQLAlchemy进行初始化:
​```
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
​```
2. 设置配置信息:先创建一个`config.py`文件,并在其中中添加以下配置信息:
​```
# dialect+driver://username:password@host:port/database   -->这是格式

import os

DIALECT = ‘mysql‘
DRIVER = ‘mysqldb‘
USERNAME = ‘root‘
PASSWORD = ‘root‘
HOST = ‘127.0.0.1‘
PORT = ‘3306‘
DATABASE = ‘db_demo1‘

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST
,PORT,DATABASE)

SQLALCHEMY_TRACK_MODIFICATIONS = False          注意:    固定格式和变量名

SECRET_KEY = os.urandom(24)


​```

3. 在主`app`文件中,添加配置文件:
​```

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config

app = Flask(__name__)
app.config.from_object(config)  ###  注意这一句一定要在 db = SQLAlchemy(app) 之前 否则报错

db = SQLAlchemy(app)


@app.route(‘/‘)
def hello_world():
    return ‘Hello World!‘

if __name__ == ‘__main__‘:
    app.run(debug=True)
​```
4. 做测试,看有没有问题:
```

### 如何使用 Flash Attention 技术部署深度学习模型的最佳实践 #### 1. **Flash Attention 的背景与优势** Flash Attention 是一种优化注意力机制的技术,通过减少内存占用提高计算效率,在大规模 Transformer 模型中表现出显著的优势[^2]。它利用分块矩阵乘法其他高效算法设计,使得 GPU 上的推理训练速度大幅提升。 #### 2. **环境准备** 为了成功部署基于 Flash Attention 的深度学习模型,需确保开发环境中具备必要的依赖项支持工具。例如,在 Linux 环境下安装支持 GPU 版本的 PyTorch 后,可以通过 `pip install deepspeed` 安装 DeepSpeed [^4]。DeepSpeed 提供了对 Flash Attention 的良好集成支持。 #### 3. **代码实现** 以下是使用 Flash Attention 进行模型微调的一个简单示例: ```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM from deepspeed.ops.flash_attention import FlashAttention # 初始化 tokenizer 模型 tokenizer = AutoTokenizer.from_pretrained("internlm/tutorials") model = AutoModelForCausalLM.from_pretrained("internlm/tutorials") # 替换原始 attention 层为 Flash Attention for layer in model.transformer.h: layer.attn.replace_with_flash_attn() # 使用 DeepSpeed 加载配置并初始化引擎 config = { "train_batch_size": 8, "fp16": {"enabled": True}, } engine, _, _, _ = deepspeed.initialize(model=model, config=config) # 输入数据处理 input_text = ["你好,世界"] inputs = tokenizer(input_text, return_tensors="pt", padding=True).to("cuda") # 前向传播 outputs = engine(**inputs) print(outputs.logits) ``` 上述代码展示了如何替换标准注意力层为 Flash Attention 并结合 DeepSpeed 实现高效的分布式训练。 #### 4. **性能评估** 在实际应用中,建议对比传统注意力机制与 Flash Attention 的运行时间、显存消耗以及精度差异。通常情况下,Flash Attention 能够提供更快的速度更低的资源需求,但在某些特殊场景下可能需要调整超参数以平衡效果效率。 #### 5. **参考资料补充** 对于初学者而言,可以参考 InternLM 提供的实战教程[^3],其中包含了详细的文档说明视频讲解,帮助快速掌握从零到一构建大模型的能力[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值