SQLAlchemy基本操作(增、删、改、查)

准备工作

为了简化数据库操作,我们将使用 SQLAlchemy——一个 Python 数据库工具(ORM,即对象关系映射)。借助 SQLAlchemy,你可以通过定义 Python 类来表示数据库里的一张表(类属性表示表中的字段 / 列),通过对这个类进行各种操作来代替写 SQL 语句。这个类我们称之为模型类,类中的属性我们将称之为字段

导入扩展类

from flask_sqlalchemy import SQLAlchemy

设置数据库URL

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/test?charset=utf8'

创建数据库模型

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))

创建数据库表

创建

下面的操作演示了如何向数据库中添加记录:

代码清单:user.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)
# 配置 sqlalchemy 数据库驱动
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/test?charset=utf8'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False    # 关闭对模型修改的监控
# 初始化
db = SQLAlchemy(app)

#创建数据库模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))

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

    #添加用户
    def save(self):
        db.session.add(self)
        db.session.commit()


 user = User(id='3', name='Tom')
 user.save()

操作结果:

查询

下面的操作演示了如何从数据库中读取记录,并进行简单的查询:

代码清单:user.py

users=User.query.all()
for user in users:
    print('User [id:{0},name{1}]'.format(user.id,user.name))

操作结果:

更新

user=User.query.get(2)
user.name='lishi'
db.session.commit()

操作结果:

删除

下面的操作删除了 User 模型中主键为 2 的记录:

user=User.query.get(2)
db.session.delete(user)
db.session.commit()

操作结果:

可以提供如下代码实现基本的功能: ``` from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.name # 创建数据库表 db.create_all() # 实现加用户 @app.route('/add_user') def add_user(): new_user = User(name='John', email='john@example.com') db.session.add(new_user) db.session.commit() return 'New user has been added!' # 实现询用户 @app.route('/find_user') def find_user(): result = User.query.filter_by(name='John').first() return 'The email address of the user is ' + result.email # 实现修改用户 @app.route('/update_user') def update_user(): user = User.query.filter_by(name='John').first() user.email = 'new_email@example.com' db.session.commit() return 'The email address of the user has been updated!' # 实现除用户 @app.route('/delete_user') def delete_user(): user = User.query.filter_by(name='John').first() db.session.delete(user) db.session.commit() return 'The user has been deleted!' if __name__ == '__main__': app.run(debug=True) ``` 上述代码实现了基本的功能,使用flask_sqlalchemy框架操作SQLite数据库。其中,创建了User模型类,包含id、name、email三个字段;同时也包含了加用户、询用户、修改用户、除用户四个接口。在实现上述功能之前,需要先安装相应的依赖包,如需使用MySQL需要另行配置数据库连接信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云淡风轻58

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值