首页 > 数据库 >使用Python操作Mysql数据库(进阶)

使用Python操作Mysql数据库(进阶)

时间:2023-03-07 14:25:12浏览次数:33  
标签:进阶 Python Mysql update tag str sql conn cur

# -*- coding: utf-8 -*-


import logging
import pymysql
from rest_framework.response import Response

logger = logging.getLogger(__name__)


# 连接数据库
def get_sql():
    try:
        conn = pymysql.connect(host='localhost',
                               port=3306,
                               user='root',
                               passwd='12345678',
                               database='django_backend_master',
                               charset='utf8')
        return conn
    except Exception as error:
        print(error)
        logger.error("===error==>{0}".format(error))


# 单条数据查询
def select_sql(sql_str, *parameter):
    conn = get_sql()
    cur = conn.cursor()
    try:
        cur.execute(sql_str, *parameter)
        results = cur.fetchall()
        return results
    except Exception as e:
        print(e)
        logger.error("===error==>{0}".format(e))


# 单条数据更新
def commit_sql(sql_str, *parameter):
    """

    :param sql_str: sql语句
    :param parameter: 参数
    :return:
    """
    conn = get_sql()
    cur = conn.cursor()
    conn.begin()
    try:
        cur.execute(sql_str, *parameter)
    except Exception as e:
        print(e)
        logger.error("===error==>{0}".format(e))
        print('事务回滚')
        conn.rollback()
    else:
        print('事务提交')
        conn.commit()
    cur.close()
    conn.close()
    return 200


# 批量数据更新
def sql_executemany(sql_str, *parameter):
    """
    正确保存sql语句
    :param sql_str:
    :param sql_info:
    :return:
    """
    conn = get_sql()
    cur = conn.cursor()
    conn.begin()
    # with get_sql() as conn:
    #     with conn.cursor() as cur:
    try:
        cur.executemany(sql_str, *parameter)
    except Exception as e:
        print(e)
        logger.error("===error==>{0}".format(e))
        print('事务回滚')
        conn.rollback()
    else:
        print('事务提交')
        conn.commit()
    cur.close()
    conn.close()
    return 200


if __name__ == '__main__':
    import datetime
    now = datetime.datetime.now()
    ######################################################
    """新增"""
    sql_tup = (str(now), str(now), 'PHP', 0)
    # cur.execute(sql_str)一个参数的写法
    insert_sql = f"""
                insert into blog_tag (update_datetime, create_datetime, tag_name, articles_count)
                values {sql_tup}
            """
    commit_sql(insert_sql)
    # ============================= #
    # cur.execute(sql_str, *parameter) 两个参数的写法
    sql_tup = (str(now), str(now), 'PHP1', 0)
    insert_sql = f"""
                insert into blog_tag (update_datetime, create_datetime, tag_name, articles_count)
                values (%s,%s,%s,%s)
            """
    commit_sql(insert_sql, sql_tup)
    # ============================= #
    # 批量新增  列表里面是元组,每个元组是新增的数据
    sql_list = [(str(now), str(now), 'Django', 0)]
    insert_sql = f"""
                    insert into blog_tag (update_datetime, create_datetime, tag_name, articles_count)
                    values (%s,%s,%s,%s)
                """
    sql_executemany(insert_sql, sql_list)
    ######################################################
    """更新"""
    update_list = ['vue333', 3]
    update_sql = f"""
        update blog_tag set tag_name=%s where id=%s
        """
    commit_sql(update_sql, update_list)
    # ============================= #
    update_list = [('vue222', 3)]
    update_sql = f"""
        update blog_tag set tag_name=(%s) where id=(%s)
    """
    sql_executemany(update_sql, update_list)
    ######################################################
    """删除"""
    delete_tup = ('PHP1', 23)
    delete_sql = f"""
        delete from blog_tag where tag_name=%s and id=%s
    """
    commit_sql(delete_sql, delete_tup)
    delete_list = [('Go', 21)]
    delete_sql = f"""
        delete from blog_tag where tag_name=%s and id=%s 
    """
    sql_executemany(delete_sql, delete_list)

 

标签:进阶,Python,Mysql,update,tag,str,sql,conn,cur
From: https://www.cnblogs.com/maplethefox/p/17187960.html

相关文章

  • Python 内置函数装饰器 classmethod staticmethod
    使用官方的说法:classmethod(function)中文说明:classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:classC:@classmetho......
  • Python2.0与Python3.0的区别
    Python2.0与Python3.0的区别输出方面Python2.0使用print关键字进行输出,比如:print“Hello”;Python3.0使用print()函数,比如:print("Hello")。输入方面Python2.0......
  • mysql执行计划:Explain语句结果中各个字段分表表示什么
    mysql执行计划:Explain语句结果中各个字段分表表示什么列名描述id查询语句中每出现⼀个SELECT关键字,MySQL就会为它分配⼀个唯⼀的id值,某些⼦查询会被优化为join......
  • 如何在windows环境下安装启动mysql实录
    1.下载mysql笔者下载的mysql-8.0.32-winx642.生成.ini配置文件在与bin目录同级下创建my.ini文件内容如下:(笔者的端口创建为3307,通常是3306,可自定义修改)[mysqld]#设置3307端......
  • Java链接mysql
    importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclassDbcon{//mysql8.0urlconf......
  • MySQL 逻辑备份工具 MyDumper
    1、依赖安装dnfinstall-ycmakegccgcc-c++gitmake2、mydumper下载和安装#下载wgethttps://github.com/mydumper/mydumper/releases/download/v0.14.1-1/my......
  • python奇葩反爬-你是故意的还是不小心的
    问题在挖掘数据时,数据存在于js文件内,所以主要思路就是,把数据提取出来,直接转json格式,通过字典的键索引获取数据。奈何在转json格式的时候一直报错。报错:Expectingvalue:......
  • 【备战面试】JavaScript 进阶问题列表
    在原博主Instagram上每天都会发布JavaScript的多选问题,并且同时也会在这个仓库中发布。从基础到进阶,测试你有多了解JavaScript,刷新你的知识,或者帮助你的coding面试!......
  • Linux-MySQL 数据备份
    MySQL数据备份是一个非常重要的工作,保证数据的安全性和可靠性。常用方法:一、使用mysqldump工具来备份MySQL数据库。该工具可以生成SQL脚本文件,包含数据库中......
  • CART分类回归树分析与python实现
    引言前面我们分享过一篇决策树算法叫ID3:ID3决策树原理分析及python实现。首先我们来回顾下ID3算法。ID3每次选取最佳特征来分割数据,这个最佳特征的判断原则是通过信息......