首页 > 数据库 >8.创建数据库以及用户表

8.创建数据库以及用户表

时间:2023-03-08 18:12:55浏览次数:38  
标签:return 创建 数据库 sql 用户 cursor user res conn

首先需要新建数据库:直接在命令行直接即可

react_v5_admin_db
create database react_v5_admin_db charset utf8;

创建用户表:user_info

create table user_info(id int primary key auto_increment, username varchar(20), password varchar(12), phone varchar(11), email varchar(20), role_id varchar(50));

配合登陆接口即可实现登陆/注册/登出操作

后端Model层与MySQL的交互如下:

import pymysql


# 获取MySQL数据库连接,使用了来雪花算法生成唯一ID
from epidemic_situation_pro.utils.snowflake_utils import get_unique_db_id


def get_mysql_conn():
    mysql_conn = pymysql.connect(host='localhost', port=3306, user='root',
                                 password="xxx", database="react_v5_admin_db", charset="utf8")
    if mysql_conn == None:
        print("MySQL数据库连接失败!")
    else:
        print("MySQL数据库连接成功!")

    # 拿到游标对象
    cursor = mysql_conn.cursor()
    return mysql_conn, cursor


# 释放资源
def release_mysql_conn(conn, cursor):
    cursor.close()
    conn.close()


# 查询数据
def query(sql, *args):
    """
    :param sql: 查询的sql语句
    :param args: 需要的可变参数
    :return: 查询结果
    """
    conn, cursor = get_mysql_conn()
    cursor.execute(sql, args)
    res = cursor.fetchall()
    return res


# 插入数据
def insert(sql, params):
    """
    :param sql: 插入的sql语句
    :param params: 需要的可变参数
    :return: 查询结果
    """
    conn, cursor = get_mysql_conn()
    aff_res = cursor.execute(sql, params)
    conn.commit()
    release_mysql_conn(conn, cursor)
    return aff_res


# 更新数据
def update(sql, params):
    """
    :param sql: 更新的sql语句
    :param params: 需要的可变参数
    :return: 查询结果
    """
    conn, cursor = get_mysql_conn()
    print("sql update category params =", params)
    aff_res = cursor.execute(sql, params)
    conn.commit()
    release_mysql_conn(conn, cursor)
    return aff_res

# 查询用户是否存在,不存在返回False并插入一条数据
def get_user_by_u_p(u, p):
    #  查询用户表
    # SQL模块中自带的填充方式
    sql_str = 'select username, password from user_info where username = %s and password= %s'
    res = query(sql_str, u, p)  # 返回多个元组,只取第一个元素
    # print("center1 res ==", res[0], type(res[0]))
    print("get user  res ==", res)
    if len(res) == 0:
        print("need insert new row data ")
        # 插入一条数据,测试使用一般都需要注册接口调用
        # add_user_by_u_p(u, p)
        return False
    return res[0]


# 添加用户
def add_user_by_u_p(u, p):
    sql_str = "insert into user_info (username, password, phone, email, role_id) value (%s, %s, %s, %s, %s)"
    if u != 'admin':
        params = (u, p, None, None, None)
    else:
        params = (u, p, '1111111111', '[email protected]', 'admin')
    res = insert(sql_str, params)  # 返回 1
    return res


if __name__ == '__main__':
    # 测试代码
    get_user_by_u_p("admin", "123456")

控制层即controller,即业务逻辑处理如下:

from epidemic_situation_pro.react_data_util import get_user_by_u_p


def get_user_by_username_pwd(username, password):
    if (username == "") | (password == ""):
        return False
    res_user = get_user_by_u_p(username, password)
    user_dict = {}
    if res_user:
        user_dict["username"] = res_user[0]
    return user_dict

 

标签:return,创建,数据库,sql,用户,cursor,user,res,conn
From: https://www.cnblogs.com/guo-s/p/17195626.html

相关文章

  • python FastAPI sqlalchemy 数据库模型基类通用模型
    作用用于所有表都需要使用的字段或者方法实现代码base.py#!/usr/bin/python#-*-coding:utf-8-*-#@time:2023/2/1317:43#@author:pugongying#@de......
  • Redis缓存数据库-快速入门
    目录Redis数据库快速入门一、Redis数据库1、redis的安装与运行2、RESP图形化操作文件二、pycharm操作redis1、Redis普通连接和连接池2、Redis数据类型2、1.String类型2、2.......
  • python创建线程传参误区记录
    创建线程可以使用threading模块中的Thread方法;其中Thread方法允许的参数如下:(self,group=None,target=None,name=None,args=(),kwargs=None,*,daemon=None)这个构......
  • linux 一条命令修改用户密码
    目录linux一条命令修改用户密码修改密码命令方法一方法二linux一条命令修改用户密码常规的修改密码需要但是有的情况下交互式的修改密码比较麻烦,需要用一条命令修改普......
  • hibernate跨数据库,json字段处理方案,自定义扩展JsonStringType
    一、背景对于一些不经常更新的静态数据,我们喜欢使用json格式存储。推荐的做法是将json数据存储在key-value数据库,但这无疑增加了技术成本,所以我们通常还是存储在RDB数据库......
  • 数据库操作
    showdatabases;显示数据库CREATEDATABASEuniversity; 创建数据库useuniversity; 进入数据库showtables; 显示数据表createTABLEperson( 创建表 IDCHAR(5), name......
  • 云图说丨云数据库GaussDB(for MySQL)事务拆分大揭秘
    摘要:数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载。本文分享自华为云社区《【云图说】第270期云数据库GaussDB(forMySQL)......
  • map转实体类插入数据库
    Map转成对象List<Map<String,Object>>personData=(List<Map<String,Object>>)restResult.get("ET_TAB");for(Map<String,......
  • SQL SERVER查看数据库应用
    sqlserver查看所有表大小、所占空间1SELECTdb_name()asDbName,2t.NAMEASTableName,3s.NameASSchemaName,4p.rowsASRowCounts,5......
  • 分布式数据库代理导出分片大表僵死或卡死原因分析及调优
    1、背景现象****分布式数据库导出分片大表代理卡死或者代理僵死2、 ****分布式数据库导出小表或者不是分片表时发现数据可以导出,但是当数据量大时就没法导出数据,再复现一......