根据用户定义的输入在SQL中有条件地选择列

时间:2017-02-10 03:20:47

标签: python csv sqlite

我正在尝试将CS​​V文件中的数据输入到SQL数据库中。 CSV文件包含多个人随时间记录的变量。这是我设置的表:

cur.execute('''CREATE TABLE IF NOT EXISTS systolic
        (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        mask_id TEXT UNIQUE,
        systolic_id INTEGER,
        rz INTEGER, one_mon INTEGER, two_mon INTEGER, three_mon INTEGER,
        six_mon INTEGER, seven_mon INTEGER, twelve_mon INTEGER, fifteen_mon INTEGER,
        eighteen_mon INTEGER, twentyone_mon INTEGER, twentyfour_mon INTEGER,
        twentyseven_mon INTEGER, thirty_mon INTEGER, thirtythree_mon INTEGER,
        thirtysix_mon INTEGER, thirtynine_mon INTEGER, fortytwo_mon INTEGER,
        fortyfive_mon INTEGER, fortyeight_mon INTEGER, fiftyone_mon INTEGER)
        ''')

我想迭代CSV文件的行,并将这些行中的数据插入CSV文件中的特定列。我希望此程序从CSV文件中的列读取值,根据该行中的数据选择SQL数据库中的特定列,并将行中的值插入到列中。我写了下面的代码,但它没有用。这样做的正确方法是什么?

cur.execute('INSERT OR IGNORE INTO systolic (mask_id, ?) VALUES (?,?)', (row['VISITCODE'], row['MASKID'],row['SBP'))

如您所见,我使用python创建数据库。感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

您似乎在]之后错过了结束括号('SBP')。

cur.execute('INSERT OR IGNORE INTO systolic (mask_id, ?) VALUES (?,?)', (row['VISITCODE'], row['MASKID'],row['SBP']))