flask_sqlalchemy基本的增删改查

简单讲解一下flask_sqlalchemy,在用flask搭建网站时,肯定是要网页和与数据库交互数据的,我认为flask_sqlalchemy是基于一个类去映射数据库中的表,然后做一些增删改查,sqlalchemy和flask_sqlalchemy其实用法区别不大,可以去官网看看sqlalchemy文档https://docs.sqlalchemy.org/en/13/core/tutorial.html,这里就做一些flask_sqlalchemy的基本操作

如果已经安装了flask包还需要安装flask_sqlalchemy,控制台pip install flask_sqlalchemy

新建py文件(例如:app.py)

常用config说明

config配置选项说明
SQLALCHEMY_DATABASE_URI数据库连接
示例1’mysql+mysql驱动名称://用户名:密码@主机:/数据库名
示例2: ‘sqlite:///db.sqlite3’’
SQLALCHEMY_ECHO调试设置为True
SQLALCHEMY_POOL_SIZE数据库池的大小,默认值为5
SQLALCHEMY_POOL_TIMEOUT连接超时时间设置
SQLALCHEMY_TRACK_MODIFICATIONS如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它

常用数据类型说明

dbmysql类型
Stringvarchar不定长字符串
CHARchar定长字符串
FloatFLOAT浮点型
IntegerINT整型
TextTEXT文本
DateTimeDATETIME日期时间

引入模块

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

配置连接

app = Flask(__name__)
数据库连接
1.这个需要安装sqlite插件
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite3'```
2.mysql连接 'mysql+mysql驱动(mysqlconnector/pymysql都行)://用户名:密码@主机/数据库名称'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://root:pwd@localhost/sqlalchemy'
这次实例用第二种mysql连接方式
注意config里的-URI-不是URL

映射类

class User(db.Model):
	__tablename__ = 'user'  # 如果这里没注明表名,默认会取类名的小写
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(10))
    age = db.Column(db.Integer)
    # 以上属性相当于是数据库中的字段名
    # 如果要插入记录需要添加构造方法
    def __init__(self, username, age):
	    self.username = username
	    self.age = age

app.py完整代码如下

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://root:pwd@localhost/sqlalchemy'
app = Flask(__name__)
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(10))
    age = db.Column(db.Integer)
    update_at = db.Column(db.DateTime, default=datetime.now)

    def __init__(self, username, age):
        self.username = username
        self.age = age

打开控制台做一些简单增删改查操作

  1. 增加记录
>>> from app import db
>>> from app import User
# 建表
>>> db.create_all()
# 添加记录
>>> user1 = User("王武", 21)
>>> db.session.add(user1)
>>> db.session.commit()
# 当然也可以一次性添加多条记录
>>> user2 = User("小红", 23)
>>> user3 = User("小明", 27)
>>> db.session.add_all([user2, user3])
>>> db.session.commit()
  1. 删除记录
user1 = User("王武", 21)
db.session.delete(user1)
de.session.commit()
# 删除记录和添加记录类似,可以配合一下查询过滤器filter()使用delete()
  1. 查询记录
# 查询所有记录
User.query.all()

# 通过主键查询
User.query.get(1)   # 查询主键为1的记录

# 使用filter和filter_by过滤器查询
# filter参数:类名.属性(字段名) filter_by参数:属性(字段名)
User.query.filter(User.username == "王武").all() 
User.query.filter(User.age > 18).all()  # filter支持运算符 >= <= == !=
User.query.filter_by(username="王武").all()  # filter_by不支持运算符
# 这里说一下all()和first()的区别
# all() 返回类型是列表 不管是一条还是多条
# first()  返回类型是对象 查询条件的第一条记录

# 限制查询
User.query.filter(User.age=18).offset(2).limit(3)  # 跳过二条开始查询,输出3条
  1. 修改记录
User.query.filter_by(username="王武").update({"username":"王明"})
# 修改成功会返回1,失败返回0
db.session.commit()

有什么问题欢迎留言

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能为您解答问题。关于flask_sqlalchemy实现MySQL增删改查代码,以下是简单的示例代码供参考: 1. 首先安装相关依赖库,在终端运行命令: pip install flask flask_sqlalchemy pymysql 2. 在flask应用中,配置数据库连接参数: from flask_sqlalchemy import SQLAlchemy from flask import Flask app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@host/db_id' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) 3. 定义数据模型: class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20)) age = db.Column(db.Integer) gender = db.Column(db.String(10)) 4. 实现增删改查功能: a. 添加数据: user = User(name='username', age=20, gender='male') db.session.add(user) db.session.commit() b. 删除数据: user = User.query.filter_by(name='username').first() db.session.delete(user) db.session.commit() c. 更新数据: user = User.query.filter_by(name='username').first() user.age = 21 db.session.commit() d. 查询数据: # 查询所有数据 users = User.query.all() for user in users: print(user.name, user.age, user.gender) # 根据条件查询单个数据 user = User.query.filter_by(name='username').first() print(user.name, user.age, user.gender) 以上是flask_sqlalchemy实现MySQL增删改查的简单示例代码,如果需要更加详细的实现方式,可以参考flask_sqlalchemy官方文档。希望以上内容能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值