问题
(我不得不删除并重新制作这个问题,因为有人把我的问题编辑得太离奇了,我无法编辑它以获得任何帮助:()
我已经研究了好几个小时了,甚至连一个数据库都做不成。我看了很多例子,但都涉及到在程序中制作字典。我需要找出如何将一个已经存在的字典转换成sqlite数据库
我已经尝试了很多,但还没有接近,我不知道我可以去哪里理解这个概念。我已经研究了堆栈溢出,但涉及到这一点的每一个问题都是从零开始制作的字典。我需要一个示例,显示字典只是一个变量
我一个接一个地犯随机错误,运气不好
代码如下:
import os
import subprocess
from tinytag import TinyTag
import sqlite3
import json
tag = ''
extf = ['$RECYCLE.BIN','System Volume Information']
for root, dirs, files in os.walk(r'\\Vgmstation\\e\\', followlinks=True):
dirs[:] = [d for d in dirs if d not in extf]
for name in files:
if name.endswith(".mp4"):
musiclist=str(os.path.join(root, name))
tag = TinyTag.get(musiclist)
tag_dict = tag.as_dict()
#print(tag_dict)
conn = sqlite3.connect('musicdatabase.db')
c = conn.cursor()
for table in tag_dict.keys():
c.execute("CREATE TABLE {} ({})".format(table, initial_db))
for k, v in tag_dict[table].items():
c.execute("ALTER TABLE {} \
ADD {} {}".format(table, k, v))
c.close()
conn.close()
结果如下:
Traceback (most recent call last): File "//VGMSTATION/testing scripts/search and print2.py", line 22, in c.execute("CREATE TABLE {} ({})".format(table, initial_db)) NameError: name 'initial_db' is not defined
我尝试取出初始的_db,因为我只从这里得到了代码:如何从字典创建sqlite3表,但是我得到了以下代码:
import os
import subprocess
from tinytag import TinyTag
import sqlite3
import json
tag = ''
extf = ['$RECYCLE.BIN','System Volume Information']
for root, dirs, files in os.walk(r'\\Vgmstation\\e\\', followlinks=True):
dirs[:] = [d for d in dirs if d not in extf]
for name in files:
if name.endswith(".mp4"):
musiclist=str(os.path.join(root, name))
tag = TinyTag.get(musiclist)
tag_dict = tag.as_dict()
#print(tag_dict)
conn = sqlite3.connect('musicdatabase.db')
c = conn.cursor()
for table in tag_dict.keys():
c.execute("CREATE TABLE {} ({})".format(table))
for k, v in tag_dict[table].items():
c.execute("ALTER TABLE {} \
ADD {} {}".format(table, k, v))
c.close()
conn.close()
结果:
Traceback (most recent call last): File "//VGMSTATION/testing scripts/search and print2.py", line 22, in c.execute("CREATE TABLE {} ({})".format(table)) IndexError: tuple index out of range
以下是tag_dict的外观:
{'comment': u"Shoot 'em up", 'album': u'Fortified Zone', 'audio_offset': None, 'title': u'Main Theme', 'track': None, 'disc_total': None, 'artist': u'Tsukasa Tawada', 'track_total': None, 'channels': 2, 'genre': u'8-Bit', 'albumartist': u'Tsukasa Tawada', 'filesize': 135151220L, 'composer': u'Tsukasa Tawada', 'year': u'1991', 'duration': 96.93016666666666, 'samplerate': 48000, 'bitrate': 294651.393, 'disc': None}
{'comment': u"Shoot 'em up", 'album': u'Fortified Zone', 'audio_offset': None, 'title': u'Stage 2', 'track': None, 'disc_total': None, 'artist': u'Tsukasa Tawada', 'track_total': None, 'channels': 2, 'genre': u'8-Bit', 'albumartist': u'Tsukasa Tawada', 'filesize': 112873545L, 'composer': u'Tsukasa Tawada', 'year': u'1991', 'duration': 83.95053333333334, 'samplerate': 48000, 'bitrate': 294651.393, 'disc': None}
{'comment': u"Shoot 'em up", 'album': u'Fortified Zone', 'audio_offset': None, 'title': u'Track 3', 'track': None, 'disc_total': None, 'artist': u'Tsukasa Tawada', 'track_total': None, 'channels': 2, 'genre': u'8-Bit', 'albumartist': u'Tsukasa Tawada', 'filesize': 134273566L, 'composer': u'Tsukasa Tawada', 'year': u'1991', 'duration': 95.96253333333334, 'samplerate': 48000, 'bitrate': 294651.393, 'disc': None}
我知道有很多这样的问题,但同样,我没有发现任何一个问题将字典作为变量显示在sqlite代码中
此外,我还没有找到使用已创建的字典变量在sqlite中创建表的最基本方法的示例
任何能给我指出正确方向的想法或链接都会很棒!哈哈
谢谢你抽出时间
这是一个非常简单的例子,说明了如何做到这一点
它只创建一个表-轨道
字段名称/数据类型为硬编码-标题、专辑、评论、流派、艺术家、作曲家、年份,所有文本字段
此外,它仅在当前目录中插入MP3文件的数据
相关问题 更多 >
编程相关推荐