美文网首页
2022-08-12 Python中pymysql,把字典格

2022-08-12 Python中pymysql,把字典格

作者: netppp | 来源:发表于2022-08-13 14:19 被阅读0次

    https://blog.csdn.net/tzyyy1/article/details/93510663

    Python中pymysql通过字典插入数据

    引子:
    今天参加面试被大佬要求写一段数据库接口实操代码,首先在写字板上开头:
    def insert(table,data):
    #这里你知道table和data,其中data是一个字典,写插入数据库的代码

    想了一下,想到的一些方法被否定了,后来被允许查资料后找到方法一(参考:http://www.bubuko.com/infodetail-2788655.htmlhttps://www.cnblogs.com/zengsf/p/9734476.html):
    import pymysql
    def insert(table,data):
    #这里你知道table和data,其中data是一个字典,写插入数据库的代码
    data = {'age': '123', 'name': 'happy'}
    table = 'users'
    # 获取到一个以键且为逗号分隔的字符串,返回一个字符串
    keys = ','.join(data.keys())
    values = ','.join(['%s'] *len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES({values})'.format(table=table, keys=keys, values=values)
    # 这里的第二个参数传入的要是一个元组
    if cursor.execute(sql, tuple(data.values())):
    print('users')
    db.commit()
    db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='test')
    cursor = db.cursor()
    insert("1","2")
    勉强算过,不过按大佬的说法 cursor.execute()这里可以直接用字典为参数,面试结束后又查了一下资料(https://www.cnblogs.com/zengsf/p/9734476.html)知道可以将res_sql转换后可以把字典当做参数,而且可以用cursor.executemany()进行批量插入,代码如下:
    ————————————————

    import pymysql
    def insert2(table,data):
    #这里你知道table和data,其中data是一个字典,写插入数据库的代码
    data = {"name": 'happy222222', 'age': '123'}
    cols = ", ".join('{}'.format(k) for k in data.keys())
    print(cols) # 'name, age'

    val_cols = ', '.join('%({})s'.format(k) for k in data.keys())
    print(val_cols)  # '%(name)s, %(age)s'
    
    sql = "insert into users(%s) values(%s)"
    res_sql = sql % (cols, val_cols)
    print(res_sql)  # 'insert into users(`name`, `age`) values(%(name)s, %(age)s)'
    
    cursor.execute(res_sql, data)  # 将字典data传入
    db.commit()
    
    a = [{'age': '123', 'name': 'fake'}, {'age': 456, 'name': 'gigi'}, {'age': 23, 'name': 'qq'}]  # 拼出要插入的内容
    cursor.executemany(res_sql, a)# 将字典列表a传入
    db.commit()
    

    db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='test')
    cursor = db.cursor()
    insert2("1","2")


    import pymysql,sqlite3

    db = sqlite3.connect('C:/Users/Administrator/AppData/Local/Programs/Python/Python39/sqlite/data.db')

    cursor = db.cursor()

    这里你知道table和data,其中data是一个字典,写插入数据库的代码

    data = {'age': '123', 'name': 'happy'}
    table = 'user'

    获取到一个以键且为逗号分隔的字符串,返回一个字符串

    keys = ','.join(data.keys())
    values = ','.join(['?'] *len(data))
    sql = 'INSERT INTO {table}({keys}) VALUES({values})'.format(table=table, keys=keys, values=values)

    这里的第二个参数传入的要是一个元组

    if cursor.execute(sql, tuple(data.values())):
    print('user')
    db.commit()

    相关文章

      网友评论

          本文标题:2022-08-12 Python中pymysql,把字典格

          本文链接:https://www.haomeiwen.com/subject/pqxfgrtx.html