flask_sqlalchemy简单用法

本文详细介绍如何使用Flask-SQLAlchemy实现数据库操作,包括安装配置、创建表、增删改查等基本功能。

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

说明

  SQLAlchemy 是 Python 的 ORM 框架,它的理念是:数据库的量级和性能重要于对象集合,而对象集合的抽象又重要于表和行

1、安装

    python: 3.6
    flask: 1.0.2
    flask_sqlalchemy: 2.3.2
  环境windows pycharm
    安装 -- 点击 file -- settings -- project py -- project interpreter 点击+号
    需要安装:pymysql   flask   flask_sqlalchemy

2、文件结构

  flask_sqlalchemy简单用法

2.1、数据库连接

1、conf.ini文件

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

2、model.py文件   用于连接数据库

# Flask类是flask框架的核心类,它实现了wsgi应用规范
from flask import  Flask
# 引用SQLAlchemy
from flask_sqlalchemy import SQLAlchemy

import configparser

# 打开文件并获取文件
cf=configparser.ConfigParser()
cf.read("conf.ini")
NAME = cf.get('db','NAME')
PASSWD = cf.get('db','PASSWD')
IPADDR = cf.get('db','IPADDR')
DATABASE = cf.get('db','DATABASE')

# 新建app对象
app = Flask(__name__)
# 加载配置信息,其中有数据库的配置信息,包含在SQLALCHEMY_DATABASE_URI中
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://%s:%s@%s/%s"%(NAME, PASSWD, IPADDR, DATABASE)
# 调试信息,如果不开会报错,true会占用内存
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 将创建的flask框架与工程所需要使用的数据库绑定到一起,
db = SQLAlchemy(app)

# 如果定义在上面会因为db参数还没有创建,直接引会的话会报错
# 1、如果你打算在该文件引用User类,请保证全局引用
# 2、无论放在哪里,至少要在db = SQLAlchemy(app)执行后,生成db对象才能进行引用,否则会导致model.py文件执行错误。
from createtb import CreateTb

# 手动创建函数,以便初始化数据
def  db_init():
    db.create_all()

# 最后还需要执行初始化函数
db_init()

2.2、创建表文件

1、createtb.py
# 引入model文件中的db函数
from model import db

class CreateTb(db.Model):
    __tablename__ = 'createtb'
    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

db.Column说明
    Integer 存储整数
    String(size)    存储有长度的字符串
    unique  唯一键
    autoincrement  自动增长
    primary_key 主键

2.3、启动

1、start.py 用于打开web站点,并创建数据库

from model import app

# 路由至首页,显示hello flask
@app.route('/')
def hello():
    return "hello flask"

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

2.4、最终效果

启动start.py
flask_sqlalchemy简单用法

web查看效果
flask_sqlalchemy简单用法

查看db

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| createtb       |
+----------------+

mysql> desc createtb;
    +-------+-------------+------+-----+---------+----------------+
    | Field | Type        | Null | Key | Default | Extra          |
    +-------+-------------+------+-----+---------+----------------+
    | id    | int(11)     | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(30) | YES  | UNI | NULL    |                |
    | addr  | varchar(30) | YES  | UNI | NULL    |                |
    +-------+-------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)

3、增删查

需要在 model.py 这个文件中最后 import modle

# 引用model文件, createtb已经引入到model文件中了 如果在引用createtb就会重复运行。
from model import CreateTb,db

添加

xiong1 = Roles(name = 'xiong1', addr = "bj")
# 这一步是在缓存中操作的,所以最后需要commit提交
db.session.add(xiong1)    
db.session.commit()

如果说修改错误,不用commit直接使用
db.session.rollback()   直接回滚事务

# 查询全部
for user in CreateTb.query.all():
    print(user.id, user.name, user.pwd)

"""
    1 xiong1 123456
    2 xiong2 123456
    3 xiong3 123456
"""

# 精确查询
# u = CreateTb.query.filter_by(name='xiong1').first()
# print(u.pwd)

# 模糊查询
# for pwd in CreateTb.query.filter(User.pwd.ilike('%123%')).all():
#     print(pwd.pwd, pwd.name)

# update   更新操作
# 解释起来就是首先将对象查询出来,然后将修改的字段赋值,并将查询出的对象提交到数据库,这样更新操作就结束了。
# u = CreateTb.query.filter_by(name='xiong1').first()
# u.pwd = 321123
# db.session.add(u)
# db.session.commit()

# delete
u = CreateTb.query.filter_by(name='xiong1').first()
db.session.delete(u)
db.session.commit()

4、参考文档

  flask-sqlalchemy快速入门 - sqlachemy增删查 - 安装步骤说明特别细的

最后附上代码密码:z6r0

转载于:https://blog.51cto.com/xiong51/2117813

### Flask SQLAlchemy 使用教程 在 Flask 中使用 SQLAlchemy 是一种高效的方式来管理和操作数据库。通过 `Flask-SQLAlchemy` 扩展,可以轻松实现 ORM(对象关系映射),从而简化复杂的 SQL 查询过程。 以下是关于如何使用 FlaskSQLAlchemy 创建并操作用户模型的具体方法: #### 1. 安装依赖库 为了使用 FlaskSQLAlchemy,需要安装以下 Python 包: ```bash pip install flask sqlalchemy flask_sqlalchemy ``` #### 2. 配置数据库连接 创建一个基本的 Flask 应用程序,并配置 SQLite 数据库作为数据存储介质。 ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 设置数据库 URI (这里以 SQLite 为例) app.config[&#39;SQLALCHEMY_DATABASE_URI&#39;] = &#39;sqlite:///site.db&#39; db = SQLAlchemy(app) ``` 上述代码片段设置了数据库路径以及初始化了 SQLAlchemy 实例[^1]。 #### 3. 定义用户模型 定义一个名为 `User` 的模型类,该类继承自 `db.Model` 并表示数据库中的表结构。 ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) def __repr__(self): return f"User(&#39;{self.username}&#39;, &#39;{self.email}&#39;)" ``` 此代码段展示了如何定义字段属性及其约束条件,例如主键 (`id`)、唯一性 (`unique`) 和非空值 (`nullable=False`) 等特性。 #### 4. 初始化数据库 运行脚本前需先创建对应的表格结构: ```python with app.app_context(): db.create_all() ``` 这一步会基于之前定义好的模型生成实际的数据库文件和表结构。 #### 5. 插入新记录到数据库 向数据库中添加一条新的用户信息可以通过实例化 `User` 对象完成。 ```python new_user = User(username=&#39;test&#39;, email=&#39;test@example.com&#39;, password=&#39;password&#39;) with app.app_context(): db.session.add(new_user) db.session.commit() ``` 这段代码演示了如何将新建的对象保存至持久化的数据库当中。 #### 6. 表单集成与前端显示 如果希望结合 HTML 页面提交表单,则可引入额外工具包如 Flask-WTF 来处理验证逻辑;同时借助 Bootstrap 提升界面美观度[^2]。 --- ### 总结 以上内容涵盖了从环境搭建到具体功能实现的过程,帮助开发者快速掌握 Flask 结合 SQLAlchemy 开发 Web 应用的核心技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值