1
我有結構爲dictionary
數據插入多個值,我想用它來喂database
:源碼 - 一次
playlists={
'user1':{'Karma Police':3.0,'Roxanne':4.0,'Sonnet':5.0,'We Will Rock You':1.0,'Song 1': 1.0},
'user2':{'Karma Police':2.0,'Roxanne':3.0,'Sonnet':2.0,'We Will Rock You':3.0,'Song 2': 1.0},
'user3':{'Karma Police':8.0,'Roxanne':1.0,'Sonnet':6.0,'We Will Rock You':4.0,'Song 3': 1.0},
'user4':{'Karma Police':5.0,'Roxanne':2.0,'Sonnet':1.0,'We Will Rock You':6.0,'Song 4': 1.0},
'user5':{'Karma Police':9.0,'Roxanne':4.0,'Sonnet':7.0,'We Will Rock You':9.0,'Song 4': 1.0}}
那麼我將數據組織成不同的lists
:
users = [k for k in playlists.keys()]
tracks = [track for track in playlists.values()]//won't need this
track_names = [t.keys() for t in tracks]
counts = [t.values() for t in tracks]
並創建database
:
db = sqlite3.connect(':memory:')
db = sqlite3.connect('users/playlistsdb')
c = db.cursor()
c.execute('''
CREATE TABLE playlists(
id text primary key,
user TEXT,
track_names TEXT,
count INTEGER)
''')
使用邏輯columns = ['user', 'track_names', 'counts']
,
我該如何將所有值全部一次性插入到playlistsdb
?
不爲這個問題的答案,但你可以使用'users = list(playlists.keys())'和'tracks = list(playlists.values())'' – viraptor
'來簡化你的列表。我不確定這些列表如何映射到你的數據庫表,但一旦你有一個代表數據庫行的元組列表,你可以使用[executemany](https:// d ocs.python.org/3.7/library/sqlite3.html)方法。 –
查詢應該看起來像INSERT INTO播放列表(id,user,track_names,count)VALUES(%s,%s,%d),(%s,%s,%d),...'。因此,創建一個查詢字符串,其中包含與len(用戶)一樣多的值列表,然後構建字典中所有值的列表 – Barmar