最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解PyMySQL插入字典類型的數(shù)據(jù)

 更新時(shí)間:2022年07月18日 14:55:59   作者:藍(lán)莓薄荷  
在我們爬蟲或者調(diào)API獲取數(shù)據(jù)后,需要將數(shù)據(jù)存入到數(shù)據(jù)庫中,如果數(shù)據(jù)是列表嵌套字典格式的話,一般做法是遍歷列表,然后用字典生成對應(yīng)的SQL語句再執(zhí)行插入到表中,本文將介紹一種更加簡便的方法來插入字典類型的數(shù)據(jù),需要的朋友可以參考下

在我們爬蟲或者調(diào)API獲取數(shù)據(jù)后,需要將數(shù)據(jù)存入到數(shù)據(jù)庫中,如果數(shù)據(jù)是列表嵌套字典格式的話,一般做法是遍歷列表,然后用字典生成對應(yīng)的SQL語句再執(zhí)行插入到表中。本文將介紹一種更加簡便的方法來插入字典類型的數(shù)據(jù)。

我們有如下數(shù)據(jù)列表,需要將該數(shù)據(jù)插入到對應(yīng)的數(shù)據(jù)表student中(表的字段名和數(shù)據(jù)列表中字典的鍵名相同)

student_list = [
    {"name": "Tony", "age": 19, "sex": "male"},
    {"name": "Lisa", "age": 18, "sex": "female"},
    {"name": "Jack", "age": 20, "sex": "male"}
]

使用pymysql批量插入數(shù)據(jù)可以用以下方法

cursor.executemany(sql, data_list)

上面的sql是一條包含占位符的插入語句,data_list就是需要插入的數(shù)據(jù)

可以通過以下方法來生成對應(yīng)的sql

def generate_sql(data_list):
    data = data_list[0]  # 取出第一條
    cols = ", ".join('`{}`'.format(k) for k in data.keys())  # 字段名拼接
    val_cols = ', '.join('%({})s'.format(k) for k in data.keys())  # 對應(yīng)值的占位符拼接
    sql = """
    INSERT INTO student(%s) VALUES(%s)
    """ % (cols, val_cols)
    return sql

生成的sql如下:

INSERT INTO student(`name`, `age`, `sex`) VALUES(%(name)s, %(age)s, %(sex)s)

生成sql后就可以使用executemany()方法批量插入數(shù)據(jù)到數(shù)據(jù)庫中,全部代碼如下

import pymysql
MYSQL_CONFIG = {
    'host': 'localhost',  # IP地址
    'port': 3306,  # 端口
    'user': 'myuser',  # 用戶名
    'passwd': '111111',  # 密碼
    'db': 'myclass',  # 數(shù)據(jù)庫
    'charset': 'utf8',  # 編碼
}
def generate_sql(data_list):
    data = data_list[0]
    cols = ", ".join('`{}`'.format(k) for k in data.keys())
    val_cols = ', '.join('%({})s'.format(k) for k in data.keys())
    sql = """
    INSERT INTO student(%s) VALUES(%s)
    """ % (cols, val_cols)
    return sql
def main():
    student_list = [
        {'name': 'Tony', 'age': 19, 'sex': 'male'},
        {'name': 'Lisa', 'age': 18, 'sex': 'female'},
        {'name': 'Jack', 'age': 20, 'sex': 'male'}
    ]
    conn = pymysql.connect(**MYSQL_CONFIG)  # 數(shù)據(jù)庫連接
    cur = conn.cursor()  # 游標(biāo)對象
    sql = generate_sql(student_list)
    cur.executemany(sql, student_list)
    conn.commit()
    cur.close()
    conn.close()
if __name__ == '__main__':
    main()

執(zhí)行以上代碼,就可以看到數(shù)據(jù)成功插入到表中

nameagesex
Tony19male
Lisa18female
Jack20male

到此這篇關(guān)于PyMySQL插入字典類型的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)PyMySQL字典類型數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

松潘县| 香港 | 九江市| 隆昌县| 德化县| 黎川县| 绵阳市| 略阳县| 彩票| 南乐县| 普洱| 临沧市| 德令哈市| 盐池县| 湘乡市| 和林格尔县| 南召县| 重庆市| 黄大仙区| 岚皋县| 东阿县| 泰安市| 东乡县| 新余市| 托克逊县| 柯坪县| 拜城县| 青田县| 泾川县| 扬州市| 宁强县| 沁源县| 旌德县| 耒阳市| 大理市| 旅游| 石台县| 石门县| 乌拉特后旗| 金塔县| 肃宁县|