詳解PyMySQL插入字典類型的數(shù)據(jù)
在我們爬蟲或者調(diào)API獲取數(shù)據(jù)后,需要將數(shù)據(jù)存入到數(shù)據(jù)庫中,如果數(shù)據(jù)是列表嵌套字典格式的話,一般做法是遍歷列表,然后用字典生成對(duì)應(yīng)的SQL語句再執(zhí)行插入到表中。本文將介紹一種更加簡便的方法來插入字典類型的數(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)文章希望大家以后多多支持腳本之家!
- MySQL 8.0數(shù)據(jù)字典的初始化與啟動(dòng)流程
- Mysql?json類型字段Java+Mybatis數(shù)據(jù)字典功能的實(shí)踐方式
- Mysql生成數(shù)據(jù)字典的原理與實(shí)例
- Python保存dict字典類型數(shù)據(jù)到Mysql并自動(dòng)創(chuàng)建表與列
- 解析MySQL8.0新特性——事務(wù)性數(shù)據(jù)字典與原子DDL
- Python3自動(dòng)生成MySQL數(shù)據(jù)字典的markdown文本的實(shí)現(xiàn)
- php生成mysql的數(shù)據(jù)字典
- MySQL 8.0數(shù)據(jù)字典緩存管理機(jī)制解析
相關(guān)文章
centos虛擬機(jī)部署opengauss數(shù)據(jù)庫詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于centos虛擬機(jī)部署opengauss數(shù)據(jù)庫的相關(guān)資料,文章詳細(xì)介紹了在CentOS上安裝和配置openGauss數(shù)據(jù)庫的過程,包括安裝步驟、環(huán)境配置、權(quán)限設(shè)置、預(yù)安裝和正式安裝等,需要的朋友可以參考下2024-12-12
Maven nexus 安裝nexus私服出現(xiàn)的問題和解決辦法
本文主要介紹安裝nexus私服的時(shí)候出現(xiàn)問題的解決辦法,這里整理了兩種問題并詳細(xì)說明了解決辦法,有需要的朋友可以參考下2016-08-08
ORACLE 系統(tǒng)函數(shù)大全SQLSERVER系統(tǒng)函數(shù)的異同
下面是Oracle支持的字符函數(shù)和它們的Microsoft SQL Server等價(jià)函數(shù)。2009-07-07
JDBC大批量寫入數(shù)據(jù)到SQLServer2000,記錄數(shù)大于10000
JDBC大批量寫入數(shù)據(jù)到SQLServer2000,記錄數(shù)大于100002009-12-12
利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫避免重復(fù)的3種方法
這篇文章主要給大家介紹了關(guān)于利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫避免重復(fù)的3種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
使用Navicat生成ER關(guān)系圖并導(dǎo)出的方法
這篇文章主要介紹了使用Navicat生成ER關(guān)系圖并導(dǎo)出的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

