2017-07-23 1 views
0

Je fais face le message d'erreurpymsql + pas assez d'arguments pour la chaîne de format + par une liste

TypeError: not enough arguments for format string

Voici mon code

for data in zip(link_hash, link, headline, snippit, rubID, date, time): 
    pass 

if not sql_one_empty: 
    sql_insert_hash = """ INSERT INTO ntv (link_hash, link, headline, snippit, rubID, date, time) VALUES (%s, %s, %s, %s, %s, %s, %s)""" 

    cur.executemany(sql_insert_hash, data) 
else: 
    pass 

erreur pleine retraçage:

Traceback (most recent call last): 
    File "/home/unixben/Development/python/mySQL_save.py", line 45, in <module> 
    cur.executemany(sql_insert_hash, data) 
    File "/usr/local/lib/python3.5/dist-packages/pymysql/cursors.py", line 193, in executemany 
    self._get_db().encoding) 
    File "/usr/local/lib/python3.5/dist-packages/pymysql/cursors.py", line 209, in _do_execute_many 
    v = values % escape(next(args), conn) 
TypeError: not enough arguments for format string 

est-ce que quelqu'un a des informations à vous poser?

Répondre

0

Les données doivent contenir 7 éléments (un pour chaque% s). Ce n'est probablement pas le cas.

0

J'ai donc quelques fichiers txt que je par

with open("temp_link.txt") as temp_link, \ 
    open("temp_LinkHash.txt") as temp_hash, \ 
    open("temp_headline.txt") as temp_headline, \ 
    open("temp_snippet.txt") as temp_snippit, \ 
    open("temp_rubID.txt") as temp_rubID, \ 
    open("temp_date.txt") as temp_date, \ 
    open("temp_time.txt") as temp_time: 
    link_url = temp_link.readlines() 
    hash_url = temp_hash.readlines() 
    headline = temp_headline.readlines() 
    snippit = temp_snippit.readlines() 
    rubID = temp_date.readlines() 
    date = temp_time.readlines() 
    time = temp_rubID.readlines() 

charge, puis par fusion de la fonction zip, mais malheureusement, je reçois le message d'erreur ci-dessus tout, sont là 7 champs, qui exactement comme prévu parce que " executemany "? Parce que readlines() retourne une liste

with open("temp_link.txt") as temp_link, \ 
    open("temp_LinkHash.txt") as temp_hash, \ 
    open("temp_headline.txt") as temp_headline, \ 
    open("temp_snippet.txt") as temp_snippit, \ 
    open("temp_rubID.txt") as temp_rubID, \ 
    open("temp_date.txt") as temp_date, \ 
    open("temp_time.txt") as temp_time: 
    link_url = temp_link.readlines() 
    hash_url = temp_hash.readlines() 
    headline = temp_headline.readlines() 
    snippit = temp_snippit.readlines() 
    rubID = temp_date.readlines() 
    date = temp_time.readlines() 
    time = temp_rubID.readlines() 


for data in zip(hash_url, link_url, headline, snippit, rubID, date, time): 
    pass 

print(data) 


if not sql_one_empty: 
    sql_insert_hash = " INSERT INTO ntv (hash_url, link_url, headline, snippet, rub_id, datum, time) VALUES (%s, %s, %s, %s, %s, %s, %s)" 
    cur.executemany(sql_insert_hash, data) 
    db.commit() 
else: 
    pass 

Je suis vraiment un peu de désespoir, avec l'interface MySQL