使用'一键来识别多个值'使用Python在SQLite3数据库中输入

时间:2016-01-23 02:16:17

标签: python sqlite

我有一个包含许多不同条目的文本文件。我想做的是取第一列,使用每个唯一值作为键,然后将第二列存储为值。我实际上有这个工作,但我正在寻找一个更好的方法来做到这一点。这是我的示例文件:

account_check:"login/auth/broken"
adobe_air_installed:kb_base+"/"+app_name+"/Path"
adobe_air_installed:kb_base+"/"+app_name+"/Version"
adobe_audition_installed:'SMB/Adobe_Audition/'+version+'/Path'
adobe_audition_installed:'SMB/Adobe_Audition/'+version+'/ExePath'

以下是我用于解析文本文件的代码:

val_dict = {}

for row in creader:
    try:
        value = val_dict[row[0]]
        value += row[1] + ", "
    except KeyError:
        value = row[1] + ", "
    val_dict[row[0]] = value

for row in val_dict.items():
    values = row[1][:-1],row[0]
    cursor.execute("UPDATE 'plugins' SET 'sets_kb_item'= ? WHERE filename= ?", values)

以下是我用来查询+格式化当前数据的代码:

def kb_item(query):
    db = get_db()
    cur = db.execute("select * from plugins where sets_kb_item like ?", (query,))
    plugins = cur.fetchall()
    for item in plugins:
        for i in item['sets_kb_item'].split(','):
            print i.strip()

这是输出:

kb_base+"/Installed"
kb_base+"/Path"
kb_base+"/Version"

我花了很多次尝试,但我终于以我想要的方式得到了输出,但是我正在寻找批评。有一个更好的方法吗?我的整个for item in plugins.... print i.strip()可以在一行中完成并保存为变量吗?我对使用数据库非常陌生,我的python技能也可以使用刷新。

注意我在这段代码中使用了csvreader,因为我最初有一个.csv文件 - 但我发现使用我提供的.txt文件同样容易。

0 个答案:

没有答案