django使用pymysql对数据库增删查改

话不多说直接上代码,此代码已经模块化,可以直接放在工程中进行调用,有4个方法select,insert,update,delete使用方法的__doc__属性可以获取到参数传递格式的帮助,不想复制的可以直接下载
文件连接://download.csdn.net/download/qq_26227841/12152664

import pymysql

# 连接的主机地址也可是localhost
HOST = "localhost"
# 数据库用户
USERNAME ="root"
# 密码
PASSWORD ="123456"
# 连接数据库的名字
DB_NAME ="python"
# mysql默认端口是3306,也可以用其他端口
PORT = 3306
# 使用的编码
CHARSET = "utf8"

def select(table_name):
    '''
    参数格式:
        table_name:"string"
    例:
         select("class")
    sql语句:
        select * form table_name
    函数语法:
        返回一条数据:
            cursor.excute(sql)
            cursor.fetchone()
        返回多条数据:
            cursor.excute(sql)
            cursor.fetchall()
    '''
    #连接数据库
    try:
        conn = pymysql.connect(
            host=HOST,  # 连接的主机地址也可是localhost
            user=USERNAME,  # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
            passwd=PASSWORD,  # 密码
            db=DB_NAME,  # 连接数据库的名字
            port=PORT,  # mysql默认端口是3306,也可以用其他端口
            charset=CHARSET,
        )
    except pymysql.Error as e:
        print("连接失败:%s" % e)

    # 获取操作游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 使用参数合成sql语句
    sql = "select * from " + table_name
    # 执行查找语法
    try:
        cursor.execute(sql)
    except pymysql.Error as e:
        # 打印错误信息
        print("发生错误:%s" % e)

    # 返回多条数据
    class_list = cursor.fetchall()
    #关闭游标
    cursor.close()
    #关闭连接
    conn.close()
    #返回查询结果,以便其他操作
    return class_list

def insert(table_name,key_list,values):
    """
    参数格式
        table_name:"string"
        key_list:["id","name",...] 键的列表
        values:[(value1,value2,...)] 列表内的元组
    例:
        select("class",["id","name"],[(3,"三班")])
    函数语法
        sql语句:sql="insert into table_name(key1,key2) values(%s,%s)" %s占位
        插入单条数据语法:
            cursor.execute(sql,("小明","男"))
        插入多条数据语法:
            info=[("小楠","女"),("小贝","女"),("小东","男")]
            cursor.executemany(sql,info)
"""
    # 把所有key合并成字符串并用","号隔开
    keys = ",".join(key_list)
    # 根据key的个数生成占位符
    tmp_list = []
    for n in key_list:
        tmp_list.append("%s")
    placeholder = ",".join(tmp_list)

    # 链接数据库
    try:
        conn = pymysql.connect(
            host=HOST,  # 连接的主机地址也可是localhost
            user=USERNAME,  # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
            passwd=PASSWORD,  # 密码
            db=DB_NAME,  # 连接数据库的名字
            port=PORT,  # mysql默认端口是3306,也可以用其他端口
            charset=CHARSET,
        )
    except pymysql.Error as e:
        print("连接失败:%s"%e)

    #使用cursor获取操作游标
    cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 使用参数合成数据库插入语句
    sql="insert into " + table_name + "(" + keys + ") " + "values("+placeholder+")"
    # 插入多条数据,即执行多遍sql语句
    try:
        cursor.executemany(sql,values)
    except pymysql.Error as e:
        # 发生错误时回滚
        conn.rollback()
        # 打印错误信息
        print("发生错误:%s" % e)

    # 关闭游标
    cursor.close()
    #把数据提交到数据库,关闭数据库
    conn.commit()
    conn.close()
    # 返回操作状态
    return True

def update(table_name,key_list,sole_key,values):
    '''
    参数格式
        table_name:"string"
        key_list:["key1","key2",..] 列表
        sole_key:"key=value"
        values:("1", "张三",...) 元组
    例:
        update("class",["id","name"],"id=3",(3,"三班"))
    sql语句:
        update table_name set key1=%s,key2=%s where id=4(主键)

    '''
    # 把用户输入的key列表,组成key=%s,key=%s的字符串
    tmp_list = []
    for n in key_list:
        tmp_list.append(n+"=%s")
    keys = ",".join(tmp_list)

    #连接数据库
    try:
        conn = pymysql.connect(
            host=HOST,  # 连接的主机地址也可是localhost
            user=USERNAME,  # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
            passwd=PASSWORD,  # 密码
            db=DB_NAME,  # 连接数据库的名字
            port=PORT,  # mysql默认端口是3306,也可以用其他端口
            charset=CHARSET,
        )
    except pymysql.Error as e:
        print("连接失败:%s" % e)

    # 获取操作游标
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 根据参数合成sql语句
    sql = "update " + table_name+ " set " + keys + " where " + sole_key
    # 执行sql语句
    try:
        cursor.execute(sql, values)
    except pymysql.Error as e:
        # 发生错误时回滚
        conn.rollback()
        # 打印错误信息
        print("发生错误:%s" % e)

    # 关闭游标
    cursor.close()
    # 同步到数据库,关闭连接
    conn.commit()
    conn.close()
    # 返回操作状态
    return True

def delete(table_name,key):
    """
        参数格式
            table_name:"string"
            key:"key=value"
        例:
            delete("class","id=3")
        sql语句:
            delete from table_name where id=4(主键)
    """
    #连接数据库
    try:
        conn = pymysql.connect(
            host=HOST,  # 连接的主机地址也可是localhost
            user=USERNAME,  # 用户名,如果没有创建gust,用户就用root用户,我这里避免用高级权限新键用户
            passwd=PASSWORD,  # 密码
            db=DB_NAME,  # 连接数据库的名字
            port=PORT,  # mysql默认端口是3306,也可以用其他端口
            charset=CHARSET,
        )
    except pymysql.Error as e:
        print("连接失败:%s" % e)

    # 获取操作游标
    cursor = conn.cursor()
    # 根据参数合成sql语句
    sql = "delete from "+ table_name + " where " + key
    # 执行sql语句
    try:
        cursor.execute(sql)
    except pymysql.Error as e:
        # 发生错误时回滚
        conn.rollback()
        # 打印错误信息
        print("发生错误:%s" % e)

    # 关闭游标
    cursor.close()
    # 同步到数据库,并关闭连接
    conn.commit()
    conn.close()
    # 返回操作状态
    return True
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值