詳解PyMySQL插入字典類型的數(shù)據(jù)
在我們爬蟲或者調(diào)API獲取數(shù)據(jù)后,需要將數(shù)據(jù)存入到數(shù)據(jù)庫中,如果數(shù)據(jù)是列表嵌套字典格式的話,一般做法是遍歷列表,然后用字典生成對(duì)應(yīng)的SQL語句再執(zhí)行插入到表中。本文將介紹一種更加簡(jiǎn)便的方法來插入字典類型的數(shù)據(jù)。
我們有如下數(shù)據(jù)列表,需要將該數(shù)據(jù)插入到對(duì)應(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ù)
可以通過以下方法來生成對(duì)應(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()) # 對(duì)應(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)對(duì)象 sql = generate_sql(student_list) cur.executemany(sql, student_list) conn.commit() cur.close() conn.close() if __name__ == '__main__': main()
執(zhí)行以上代碼,就可以看到數(shù)據(jù)成功插入到表中
name | age | sex |
---|---|---|
Tony | 19 | male |
Lisa | 18 | female |
Jack | 20 | male |
到此這篇關(guān)于PyMySQL插入字典類型的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)PyMySQL字典類型數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python pymysql連接數(shù)據(jù)庫并將查詢結(jié)果轉(zhuǎn)化為Pandas dataframe
- Python pymysql向SQL語句中傳參的多種方法
- python-pymysql獲取字段名稱-獲取內(nèi)容方式
- python中pymysql的executemany使用方式
- 封裝一個(gè)python的pymysql操作類
- 詳解Python如何利用pymysql封裝項(xiàng)目通用的連接和查詢
- python使用pymysql操作MySQL錯(cuò)誤代碼1054和1064處理方式
- python pymysql peewee關(guān)于時(shí)區(qū)問題分析
相關(guān)文章
Navicat Premium 16最新永久激活教程(NavicatCracker)
最新版的Navicat Premium 16 已經(jīng)發(fā)布,今天小編給大家分享Navicat Premium 16最新永久激活教程(NavicatCracker),感興趣的朋友跟隨小編一起看看吧2023-06-06SQL大量數(shù)據(jù)查詢的優(yōu)化及非用like不可時(shí)的處理方案
這篇文章主要介紹了SQL大量數(shù)據(jù)查詢的優(yōu)化及非用like不可時(shí)的處理方案,需要的朋友可以參考下2015-07-07數(shù)據(jù)庫中的左連接(left join)和右連接(right join)區(qū)別
關(guān)于左連接和右連接總結(jié)性的一句話,左連接 where只影向右表,右連接where只影響左表2012-06-06Access與sql server的語法區(qū)別總結(jié)
這篇文章主要介紹了Access與sql server的語法區(qū)別總結(jié),需要的朋友可以參考下2007-03-03使用sqlplus創(chuàng)建DDL和DML操作技巧
這篇文章主要介紹了使用sqlplus創(chuàng)建DDL和DML操作技巧,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05數(shù)據(jù)庫連接池Druid與Hikari對(duì)比詳解
這篇文章主要為大家介紹了數(shù)據(jù)庫連接池Druid與Hikari對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02