Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQL语句只输出列表的最后一行_Python_Sql_Database_Execute - Fatal编程技术网

Python SQL语句只输出列表的最后一行

Python SQL语句只输出列表的最后一行,python,sql,database,execute,Python,Sql,Database,Execute,下面是将数据从list appstore插入数据库ios.db中创建的Applestore表的代码 import sqlite3 connection = sqlite3.connect("ios.db") cursor = connection.cursor() for p in appstore[1:]: format_str = """INSERT INTO Applestore (id, track_name, size_bytes, curr

下面是将数据从list appstore插入数据库ios.db中创建的Applestore表的代码

 import sqlite3
    connection = sqlite3.connect("ios.db")
    cursor = connection.cursor()
    for p in appstore[1:]: 
        format_str = """INSERT INTO Applestore (id, track_name, size_bytes, currency, price, rating_count_tot, rating_count_ver, user_rating, user_rating_ver, ver,  cont_rating, prime_genre, sup_devices_num, ipadSc_url, lang_num, vpp_lic) 
        VALUES ("{id}", "{track_name}", "{size_bytes}", "{currency}", "{price}", "{rating_count_tot}", "{rating_count_ver}", "{user_rating}", "{user_rating_ver}", "{ver}",  "{cont_rating}", "{prime_genre}", "{sup_devices_num}", "{ipadSc_url}", "{lang_num}", "{vpp_lic}");""" 
        sql_command = format_str.format(id = p[0],track_name = p[1],size_bytes = p[2],currency = p[3],price = p[4],rating_count_tot = p[5],rating_count_ver = p[6], user_rating = p[7], user_rating_ver = p[8], ver = p[9], cont_rating = p[10], prime_genre = p[11], sup_devices_num = p[12], ipadSc_url = p[13], lang_num = p[14], vpp_lic = p[15]) 

    cursor.execute(sql_command)


    connection.commit()

    connection.close()
这仅输出最后一行

import sqlite3
connection = sqlite3.connect("ios.db")
cursor = connection.cursor()
cursor.execute("""SELECT * FROM Applestore""")
print("fetchall:")
result = cursor.fetchall() 
for r in result:
    print(r)
添加上述建议后,代码如下所示:

import sqlite3
connection = sqlite3.connect("ios.db")
cursor = connection.cursor()
for p in appstore:
    format_str = """INSERT INTO Applestore (id, track_name, size_bytes, currency, price, rating_count_tot, rating_count_ver, user_rating, user_rating_ver, ver,  cont_rating, prime_genre, sup_devices_num, ipadSc_url, lang_num, vpp_lic) 
    VALUES (id, track_name, size_bytes, currency, price, rating_count_tot, rating_count_ver, user_rating, user_rating_ver, ver,  cont_rating, prime_genre, sup_devices_num, ipadSc_url, lang_num, vpp_lic);""" 
    #sql_command = format_str.format(id = p[0],track_name = p[1],size_bytes = p[2],currency = p[3],price = p[4],rating_count_tot = p[5],rating_count_ver = p[6], user_rating = p[7], user_rating_ver = p[8], ver = p[9], cont_rating = p[10], prime_genre = p[11], sup_devices_num = p[12], ipadSc_url = p[13], lang_num = p[14], vpp_lic = p[15]) 
    cursor.execute(format_str, (*p[1:16]))


connection.commit()
connetion.close()

错误:函数最多接受2个参数(给定17个)

每次在for循环中循环时都会覆盖SQL命令

您可以在for循环中放置
cursor.execute(sql\u命令)

sql\u命令=…

否的正下方,它打印出数据库中的所有结果;这里只有一个结果,因为appstore[1::::循环中的
p的
c.execute
不在
范围内,所以只执行最后一次插入。您不应该使用字符串格式构建SQL查询;这是一种SQL注入风险,会导致难以识别的错误queries@roganjosh同意,但这是另一个问题。7 sql\u命令=格式\u str.format(id=p[0],track\u name=p[1],size\u bytes=p[2],currency=p[3],price=p[4],rating\u count\u tot=p[5],rating\u count\u ver=p[6],user\u rating=p[7],user\u rating\u ver=p[8],ver=p[9],cont\u rating=p[10],prime_genre=p[11],sup_devices_num=p[12],ipadSc_url=p[13],lang_num=p[14],vpp_lic=p[15])--->8游标。执行(sql_命令)9 10操作错误:靠近“HOOK”:语法error@roganjosh这是我想办法完成工作的唯一方法。我还是个新手,所以就跟我说一点吧。当我把cursor.execute(sql_命令)放在for循环中时,它会给我上面的错误。如果您有其他方法,我们将非常感谢您的帮助。在过去的三天里,我一直在努力,但我感到很沮丧