繁体   English   中英

使用python将JSON导入mysql

[英]Importing JSON into mysql using python

我试图将此导入到mysql中,我有json输出:

 {u'age': u'27',
  u'foulsCommitted': u'36',
  u'foulsSuffered': u'19',
  u'goalAssists': u'0',
  u'no': u'18',
  u'pla': u'Jaume Costa',
  u'pos': u'D',
  u'redCards': u'1',
  u'shotsOnTarget': u'2',
  u'starts': u'19',
  u'subIns': u'1',
  u'totalGoals': u'0',
  u'totalShots': u'7',
  u'yellowCards': u'7'},
 {u'age': u'28',
  u'foulsCommitted': u'0',
  u'foulsSuffered': u'0',
  u'goalAssists': u'0',
  u'no': u'3',
  u'pla': u'Bojan Jokic',
  u'pos': u'D',
  u'redCards': u'0',
  u'shotsOnTarget': u'0',
  u'starts': u'0',
  u'subIns': u'0',
  u'totalGoals': u'0',
  u'totalShots': u'0',
  u'yellowCards': u'0'},
 {u'age': u'18',
  u'foulsCommitted': u'4',
  u'foulsSuffered': u'2',
  u'goalAssists': u'0',
  u'no': u'28',
  u'pla': u'Adri\xe1n Mar\xedn ',
  u'pos': u'D',
  u'redCards': u'0',
  u'shotsOnTarget': u'0',
  u'starts': u'4',
  u'subIns': u'0',
  u'totalGoals': u'0',
  u'totalShots': u'1',
  u'yellowCards': u'1'},
 {u'age': u'24',
  u'foulsCommitted': u'10',
  u'foulsSuffered': u'10',
  u'goalAssists': u'0',
  u'no': u'5',
  u'pla': u'Mateo Musacchio',
  u'pos': u'D',
  u'redCards': u'0',
  u'shotsOnTarget': u'4',
  u'starts': u'10',
  u'subIns': u'1',
  u'totalGoals': u'3',
  u'totalShots': u'5',
  u'yellowCards': u'1'},
 {u'age': u'24',
  u'foulsCommitted': u'19',
  u'foulsSuffered': u'9',
  u'goalAssists': u'1',
  u'no': u'2',
  u'pla': u'Mario Gaspar ',
  u'pos': u'D',
  u'redCards': u'0',
  u'shotsOnTarget': u'8',
  u'starts': u'22',
  u'subIns': u'2',
  u'totalGoals': u'3',
  u'totalShots': u'24',
  u'yellowCards': u'2'},
 {u'age': u'27',
  u'foulsCommitted': u'15',
  u'foulsSuffered': u'9',
  u'goalAssists': u'2',
  u'no': u'15',
  u'pla': u'Victor Ruiz',
  u'pos': u'D',
  u'redCards': u'0',
  u'shotsOnTarget': u'0',
  u'starts': u'17',
  u'subIns': u'1',
  u'totalGoals': u'0',
  u'totalShots': u'3',
  u'yellowCards': u'3'},
 {u'age': u'30',
  u'foulsCommitted': u'11',
  u'foulsSuffered': u'9',
  u'goalAssists': u'0',
  u'no': u'22',
  u'pla': u'Antonio Rukavina',
  u'pos': u'D',
  u'redCards': u'0',
  u'shotsOnTarget': u'0',
  u'starts': u'11',
  u'subIns': u'3',
  u'totalGoals': u'0',
  u'totalShots': u'3',
  u'yellowCards': u'3'},
 {u'age': u'24',
  u'foulsCommitted': u'48',
  u'foulsSuffered': u'18',
  u'goalAssists': u'9',
  u'no': u'17',
  u'pla': u'Denis Cheryshev',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'20',
  u'starts': u'17',
  u'subIns': u'7',
  u'totalGoals': u'4',
  u'totalShots': u'59',
  u'yellowCards': u'6'},
 {u'age': u'24',
  u'foulsCommitted': u'8',
  u'foulsSuffered': u'12',
  u'goalAssists': u'1',
  u'no': u'6',
  u'pla': u'Jonathan Dos Santos',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'5',
  u'starts': u'12',
  u'subIns': u'10',
  u'totalGoals': u'2',
  u'totalShots': u'10',
  u'yellowCards': u'4'},
 {u'age': u'20',
  u'foulsCommitted': u'24',
  u'foulsSuffered': u'13',
  u'goalAssists': u'4',
  u'no': u'19',
  u'pla': u'Mois\xe9s G\xf3mez',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'11',
  u'starts': u'16',
  u'subIns': u'8',
  u'totalGoals': u'4',
  u'totalShots': u'26',
  u'yellowCards': u'5'},
 {u'age': u'18',
  u'foulsCommitted': u'0',
  u'foulsSuffered': u'0',
  u'goalAssists': u'0',
  u'no': u'27',
  u'pla': u'Nahuel Leiva',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'0',
  u'starts': u'0',
  u'subIns': u'0',
  u'totalGoals': u'0',
  u'totalShots': u'0',
  u'yellowCards': u'0'},
 {u'age': u'30',
  u'foulsCommitted': u'32',
  u'foulsSuffered': u'25',
  u'goalAssists': u'1',
  u'no': u'21',
  u'pla': u'Bruno',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'7',
  u'starts': u'20',
  u'subIns': u'1',
  u'totalGoals': u'2',
  u'totalShots': u'18',
  u'yellowCards': u'3'},
 {u'age': u'23',
  u'foulsCommitted': u'3',
  u'foulsSuffered': u'5',
  u'goalAssists': u'0',
  u'no': u'26',
  u'pla': u'Sergio Marcos',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'2',
  u'starts': u'5',
  u'subIns': u'0',
  u'totalGoals': u'0',
  u'totalShots': u'3',
  u'yellowCards': u'0'},
 {u'age': u'27',
  u'foulsCommitted': u'26',
  u'foulsSuffered': u'18',
  u'goalAssists': u'3',
  u'no': u'4',
  u'pla': u'Tom\xe1s Pina',
  u'pos': u'M',
  u'redCards': u'1',
  u'shotsOnTarget': u'1',
  u'starts': u'10',
  u'subIns': u'5',
  u'totalGoals': u'0',
  u'totalShots': u'7',
  u'yellowCards': u'3'},
 {u'age': u'23',
  u'foulsCommitted': u'34',
  u'foulsSuffered': u'20',
  u'goalAssists': u'1',
  u'no': u'14',
  u'pla': u'Manuel Trigueros',
  u'pos': u'M',
  u'redCards': u'0',
  u'shotsOnTarget': u'6',
  u'starts': u'18',
  u'subIns': u'5',
  u'totalGoals': u'1',
  u'totalShots': u'22',
  u'yellowCards': u'6'},
 {u'age': u'22',
  u'foulsCommitted': u'5',
  u'foulsSuffered': u'14',
  u'goalAssists': u'0',
  u'no': u'10',
  u'pla': u'Joel Campbell',
  u'pos': u'F',
  u'redCards': u'0',
  u'shotsOnTarget': u'3',
  u'starts': u'7',
  u'subIns': u'0',
  u'totalGoals': u'0',
  u'totalShots': u'9',
  u'yellowCards': u'1'},
 {u'age': u'25',
  u'foulsCommitted': u'18',
  u'foulsSuffered': u'23',
  u'goalAssists': u'3',
  u'no': u'9',
  u'pla': u'Giovani Dos Santos',
  u'pos': u'F',
  u'redCards': u'0',
  u'shotsOnTarget': u'8',
  u'starts': u'13',
  u'subIns': u'8',
  u'totalGoals': u'1',
  u'totalShots': u'35',
  u'yellowCards': u'2'},
 {u'age': u'22',
  u'foulsCommitted': u'15',
  u'foulsSuffered': u'15',
  u'goalAssists': u'3',
  u'no': u'23',
  u'pla': u'Gerard Moreno',
  u'pos': u'F',
  u'redCards': u'0',
  u'shotsOnTarget': u'15',
  u'starts': u'11',
  u'subIns': u'5',
  u'totalGoals': u'5',
  u'totalShots': u'26',
  u'yellowCards': u'2'},
 {u'age': u'31',
  u'foulsCommitted': u'28',
  u'foulsSuffered': u'31',
  u'goalAssists': u'1',
  u'no': u'8',
  u'pla': u'Ikechukwu Uche',
  u'pos': u'F',
  u'redCards': u'0',
  u'shotsOnTarget': u'15',
  u'starts': u'17',
  u'subIns': u'4',
  u'totalGoals': u'5',
  u'totalShots': u'37',
  u'yellowCards': u'2'}]

        import json
        testFile = open("output.json")
        data = json.load(testFile)

我尝试设置

pla = data["pla"]

我收到以下错误:“列表索引必须是整数,而不是str”

以下是我的插入语句:

sql = "INSERT INTO soccer_player (player_name, player_no , player_pos) VALUES ( pla , no , pos)"  

这是什么问题?

根据您显示的JSON数据, data成为字典列表

如果要将该列表中的所有项目插入MySQL数据库,可以使用executemany()

sql = """
    INSERT INTO 
        soccer_player (player_name, player_no , player_pos) 
    VALUES 
        (%(pla)s, %(no)s, %(pos)s)
"""

cursor.executemany(sql, data)

注意我正在使用%(pla)s%(no)s%(pos)s的占位符-这是所谓的关键字参数化”查询的特殊语法,即所谓的“ Python扩展格式”PEP-249 ) 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM