首页 > 数据库 >使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查

使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查

时间:2023-06-28 14:07:51浏览次数:51  
标签:SQLAlchemy name db 改查 user MySQL password data email

在 Flask 中使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/dbname'
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(50))
    email = db.Column(db.String(50), unique=True)
    password = db.Column(db.String(50))

    def __init__(self, name, email, password):
        self.name = name
        self.email = email
        self.password = password

@app.route('/users', methods=['POST'])
def create_user():
    data = request.get_json()
    name = data['name']
    email = data['email']
    password = data['password']
    new_user = User(name, email, password)
    db.session.add(new_user)
    db.session.commit()
    return jsonify({'message': 'User created successfully!'})

@app.route('/users', methods=['GET'])
def get_users():
    users = User.query.all()
    output = []
    for user in users:
        user_data = {}
        user_data['id'] = user.id
        user_data['name'] = user.name
        user_data['email'] = user.email
        user_data['password'] = user.password
        output.append(user_data)
    return jsonify({'users': output})

@app.route('/users/<id>', methods=['GET'])
def get_user(id):
    user = User.query.get(id)
    if not user:
        return jsonify({'message': 'User not found!'})
    user_data = {}
    user_data['id'] = user.id
    user_data['name'] = user.name
    user_data['email'] = user.email
    user_data['password'] = user.password
    return jsonify({'user': user_data})

@app.route('/users/<id>', methods=['PUT'])
def update_user(id):
    user = User.query.get(id)
    if not user:
        return jsonify({'message': 'User not found!'})
    data = request.get_json()
    user.name = data['name']
    user.email = data['email']
    user.password = data['password']
    db.session.commit()
    return jsonify({'message': 'User updated successfully!'})

@app.route('/users/<id>', methods=['DELETE'])
def delete_user(id):
    user = User.query.get(id)
    if not user:
        return jsonify({'message': 'User not found!'})
    db.session.delete(user)
    db.session.commit()
    return jsonify({'message': 'User deleted successfully!'})

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

在上面的示例代码中,我们定义了一个名为 User 的数据模型,然后在 Flask 中创建了五个路由,分别用于创建用户、获取所有用户、获取单个用户、更新用户和删除用户。在每个路由中,我们都使用 SQLAlchemy 对数据库进行操作。需要注意的是,在使用 SQLAlchemy 时,我们需要在 Flask 应用中先定义数据库连接信息和数据模型。


使用 MySQL cursor 也可以直接执行 SQL 命令来实现对 MySQL 数据库的增删改查。以下是一个简单的示例代码,可以使用 MySQL cursor 来实现对 MySQL 数据库的增删改查:

import mysql.connector

# 连接 MySQL 数据库
mydb = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="dbname"
)

# 创建 MySQL cursor
mycursor = mydb.cursor()

# 插入数据
sql = "INSERT INTO users (name, email, password) VALUES (%s, %s, %s)"
val = ("John", "[email protected]", "password123")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record inserted.")

# 查询数据
mycursor.execute("SELECT * FROM users")
myresult = mycursor.fetchall()
for x in myresult:
    print(x)

# 更新数据
sql = "UPDATE users SET name = %s WHERE email = %s"
val = ("Mike", "[email protected]")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record(s) updated")

# 删除数据
sql = "DELETE FROM users WHERE email = %s"
val = ("[email protected]",)
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")

在上面的示例代码中,我们首先连接到 MySQL 数据库,然后创建了一个 MySQL cursor 对象。接下来,我们可以使用 execute() 函数来执行 SQL 命令,例如插入数据、查询数据、更新数据和删除数据等。需要注意的是,在执行 SQL 命令后,我们需要使用 commit() 函数来提交事务的更改。

标签:SQLAlchemy,name,db,改查,user,MySQL,password,data,email
From: https://blog.51cto.com/u_16018700/6570851

相关文章

  • mysql系列基础篇03----约束
    一、概述1、概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据2、目的:保证数据库中数据的正确,有效性和完整性。3、分类  二、约束演示创建一个用户表createtablemyuser(idintprimarykeyauto_incrementcomment'主键',namevarchar(10)notnulluniq......
  • (转载)Mysql里的锁(排它锁、共享锁、行锁、表锁、间隙锁、临键锁、意向锁)
    转载自:Mysql里的锁(排它锁、共享锁、行锁、表锁、间隙锁、临键锁、意向锁)一、加锁的目的是什么?在我们了解数据库锁之前,首先我们必须要明白加锁的目的是为了解决什么问题,如果你还不清楚的话,那么从现在起你应该知道,数据库的锁是为了解决事务的隔离性问题,为了让事务之间相互不影......
  • G1垃圾回收参数调优及MySQL虚引用造成GC时间过长分析 | 京东云技术团队
    1.背景我方有一应用,偶尔会出现GC时间过长(间隔约4小时),导致性能波动的问题(接口最长需要耗时3秒以上)。经排查为G1垃圾回收器参数配置不当叠加MySQL链接超过闲置时间回收,产生大量的虚引用,导致G1在执行老年代混合GC,标记阶段耗时过长导致。以下为对此问题的分析及问题总结。此外,此......
  • mysql系列基础篇01---通用的语法及分类
    通用语法及分类DDL:数据定义语言,用来定义数据库对象(数据库、表、字段)DML:数据操作语言,用来对数据库表中的数据进行增删改DQL:数据查询语言,用来查询数据库中表的记录DCL:数据控制语言,用来创建数据库用户、控制数据库的控制权限一、DDL(数据定义语言)1、数据库操作1.1创......
  • 如何解析和读取mysql binlog
    要解析和读取MySQL的二进制日志(binlog),可以使用一些工具和方法。MySQL官方提供的工具:MySQL自带了一个名为mysqlbinlog的命令行工具,可以用于解析和读取二进制日志。通过执行以下命令,您可以查看二进制日志的内容:mysqlbinlog[options][binlog_files]options是......
  • C++ - 连接mysql数据库
    1.准备工作1.1把libmysql.dll和libmysql.lib文件复制到工程目录下首先,我们要找到刚刚开始下载的MySQL数据库的安装目录,打开目录,并且将libmysql.dll文件和libmysql.lib文件复制到工程目录下~我安装MySQL的路径:C:\ProgramFiles\MySQL\MySQLServer5.7\lib 1.2......
  • 解决:远程连接mysql:报异常,1044 - Access denied for user ‘root‘@‘%‘ to database
    Navicat报错:使用Navicat远程连接,Docker中的mysql5.6时报异常,:1044-Accessdeniedforuser'root'@'%'todatabase'xxx'问题原因:(1)根本原因:远程连接用户权限不足!(2)直接原因:应该是创建远程连接用户‘root@%’时,没有添加访问数据库的权限。解决办法:#这里为刚才创建的root@......
  • 一文总结高并发大数据量下MySQL开发规范【军规】
    在互联网公司中,MySQL是使用最多的数据库,那么在并发量大、数据量大的互联网业务中,如果高效的使用MySQL才能保证服务的稳定呢?根据本人多年运维管理经验的总结,梳理了一些基础的开发规范,希望能给大家带来一些帮助。一、基础规范数据库字符集默认使用utf8mb4,兼容utf8,并支持存储emoji......
  • #yyds干货盘点#线上MySQL的自增id用尽处理
    MySQL的自增id都定义了初始值,然后不断加步长。虽然自然数没有上限,但定义了表示这个数的字节长度,计算机存储就有上限。比如,无符号整型(unsignedint)是4个字节,上限就是2^32-1。那自增id用完,会怎么样?表定义自增值id表定义的自增值达到上限后的逻辑是:再申请下一个id时,得到的值保持不......
  • mysql常用命令
    连接到MySQL服务器:mysql-uusername-p显示数据库列表:SHOWDATABASES;创建数据库:CREATEDATABASEdatabase_name;删除数据库 USEdatabase_name;DROPDATABASEdatabase_name;  切换到指定数据库:USEdatabase_n......