0

私は以下の辞書形式を持っています:

{ File1:{name1:2,name2:4},
  File2:{name3:3, name2:5},
  File3:{name5:6}  }

以下の形式でMySQLテーブルに挿入したい:

Id|File_name|Name|#of Seen
1   File1    name1  2
2   File1    name2  4
3   File3    name3  3
4   File2    name2  5
5   File3    name5  6

以下のコードを書きましたが、テーブルの行(S)に「null」が表示され続けます(現在は1行のみです)。

connect = MySQLdb.connect(host = "127.8.2.3", port=3377, user = "root",  db="info")
with connect: 

    cur = connect.cursor()
    for i in maindict.items():
        keys=i[0]
        for k,v in innerdict.items():
            k=i[1]
            v=i[2]



            query="INSERT INTO TABLE names_info (id,filename,name) VALUES (%(id)s,% (filename)s, %(name)s)"
            cursor.execute(query)

なぜそれが機能しないのか、またはデータから上記の表を取得するにはどうすればよいか知っている人はいますか?

4

1 に答える 1

1

さて、辞書の反復を行う簡単な方法は...

maindict = {'File1': {'name1': 2, 'name2': 4},
            'File2': {'name3': 3, 'name2': 5},
            'File3': {'name5': 6}}

for filename, name_and_number in maindict.iteritems():
    for name, number in name_and_number.iteritems():
        print filename, name, number

...そして、おそらくこれらの行を置き換える必要があります...

query="INSERT INTO TABLE names_info (id,filename,name) VALUES (%(id)s,% (filename)s, %(name)s)"
cursor.execute(query)

...もっとこのようなもので...

query = "INSERT INTO TABLE names_info (id,filename,name) VALUES (%s,%s,%s)"
cursor.execute(query, [id, filename, name])

...潜在的なSQL インジェクションの問題を回避するため。

于 2013-04-16T12:24:31.983 に答える