• pymysql总结


    一、创建数据库

    import pymysql
    conn = pymysql.connect(host='ip', user='root', password='密码')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    sql = "create database db1 default charset utf8"
    cursor.execute(sql)
    cursor.close()
    conn.close()

    二、创建表

    import pymysql
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    sql = """
    create table students(
        id varchar(20),
        name varchar(20),
        age int
    )engine=innodb default charset=utf8
    """
    cursor.execute(sql)
    cursor.close()
    conn.close()

    注意:创建表时,要设置主键

    create table students(
        id varchar(20) primary key,
        name varchar(20),
        age int
    )engine=innodb default charset=utf8;

    三、操作数据

    1、插入数据

    a、普通版

    import pymysql
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    num = '10002'
    name = 'ajax'
    age = 25
    sql = "insert into students(id, name, age) values(%s, %s, %s)"
    try:
        cursor.execute(sql, (num, name, age))
        # 插入数据,需要提交连接mysql对象
        conn.commit()
    except Exception as e:
        print(e)
        conn.rollback()
    cursor.close()
    conn.close()

    注意:conn.commit(), 支持事务(innodb)

     b、高级版(灵活版)

    import pymysql
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    data = {
        'id': '1001',
        'name': 'tom',
        'age': 24
    }
    
    table = 'students'
    keys = ', '.join(data.keys())
    values = ', '.join(['%s'] * len(data.values()))
    # print(keys)
    # print(values)
    sql = "insert into {table}({keys}) values({values})".format(table=table, keys=keys, values=values)
    # print(sql)
    # print(tuple(data.values()))
    try:
        cursor.execute(sql, tuple(data.values()))
        # 插入数据,需要提交连接mysql对象
        print('数据添加成功')
        conn.commit()
    except Exception as e:
        print(e)
        conn.rollback()
    cursor.close()
    conn.close()

    2、更新数据

    a、普通版

    import pymysql
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    age = 100
    id = '1001'
    
    sql = "update students set age=%s where id=%s"
    
    try:
        cursor.execute(sql, (age, id))
        print('修改数据成功')
        conn.commit()
    except Exception as e:
        print(e)
        conn.rollback()

    b、高级版(灵活版)

    作用:如果数据存在,则更新数据,如果数据不存在,则添加数据

    import pymysql
    
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    data = {
        'id': '1003',
        'name': 'tom',
        'age': 26
    }
    
    table = 'students'
    keys = ', '.join(data.keys())
    values = ', '.join(['%s'] * len(data.values()))
    # print(keys)
    # print(values)
    sql = "insert into {table}({keys}) values({values}) on duplicate key update".format(table=table, keys=keys,
                                                                                        values=values)
    # print(sql)
    update = ', '.join([" {}= %s".format(key) for key in data])
    # print(update)
    sql = sql + update
    # print(sql)
    # insert into students(id, name, age) values(%s, %s, %s) on duplicate key update id= %s,  name= %s,  age= %s
    # print(tuple(data.values()) * 2)
    try:
        cursor.execute(sql, tuple(data.values()) * 2)
        # 插入数据,需要提交连接mysql对象
        print('数据更新或添加成功')
        conn.commit()
    except Exception as e:
        print(e)
        conn.rollback()
    cursor.close()
    conn.close()

    3、删除数据

    import pymysql
    
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    table = 'students'
    condition = 'age > 30'
    sql = "delete from {table} where {condition}".format(table=table, condition=condition)
    # print(sql)
    
    try:
        cursor.execute(sql)
        print('删除数据成功')
        conn.commit()
    except Exception as e:
        print(e)
        conn.rollback()

    4、查询数据

    import pymysql
    
    conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
    # 以字典的形式返回操作结果
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    table = 'students'
    condition = 'age > 10'
    sql = "select * from {table} where {condition}".format(table=table, condition=condition)
    # print(sql)
    
    try:
        cursor.execute(sql)
        results = cursor.fetchall()
        print(results)
    except Exception as e:
        conn.rollback()
  • 相关阅读:
    2019-2020-2 20175203马羽达《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175203马羽达《网络对抗技术》Exp8 Web基础
    2019-2020-2 20175203马羽达《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175203马羽达《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175203马羽达《网络对抗技术》Exp5 信息搜集与漏洞扫描
    2019-2020-2 20175203马羽达《网络对抗技术》Exp4 恶意代码分析
    2019-2020-2 20175203马羽达《网络对抗技术》Exp3 免杀原理与实践
    2019-2020-2 20175203马羽达《网络对抗技术》Exp2 后门原理与实践
    2019-2020-2 20175203马羽达《网络对抗技术》EXP1 PC平台的逆向破解
    2019-2020-2 20175203马羽达《网络对抗技术》Kali的安装
  • 原文地址:https://www.cnblogs.com/wt7018/p/11907239.html
Copyright © 2020-2023  润新知