您有以下python代码:
c.execute("insert into medicoes values(?,?,?,?,?,?,?)" % keys)我认为应该是
c.execute("insert into medicoes values (?,?,?,?,?,?,?)", keys)因为
%操作员希望字符串左边的字符串包含格式代码。
现在,只需要做
keys一个元组(或列表),即可按正确的顺序包含medicoes表新行的值。考虑以下python代码:
import jsontraffic = json.load(open('xxx.json'))columns = ['local', 'coord', 'sentido', 'veiculos', 'modalidade', 'pistas']for timestamp, data in traffic.iteritems(): keys = (timestamp,) + tuple(data[c] for c in columns) print str(keys)当我使用您的样本数据运行此命令时,我得到:
(u'2011-12-19 08:38', u'R. Fernandes Vieira; esquina Protxe1sio Alves', u'-30.035535,-51.211079', u'xfanico', u'automotores', u'semxe1foro 30-70', u'3')(u'2011-12-17 16:00', u'Av. Protxe1sio Alves; esquina Ramiro Barcelos', u'-30.036916,-51.208093', u'bairro-centro', u'automotores', u'semaforo 50-15', u'2+c')
这似乎是您需要的元组。
您可以使用以下内容添加必要的sqlite代码:
import jsonimport sqlite3traffic = json.load(open('xxx.json'))db = sqlite3.connect("fluxos.sqlite")query = "insert into medicoes values (?,?,?,?,?,?,?)"columns = ['local', 'coord', 'sentido', 'veiculos', 'modalidade', 'pistas']for timestamp, data in traffic.iteritems(): keys = (timestamp,) + tuple(data[c] for c in columns) c = db.cursor() c.execute(query, keys) c.close()编辑: 如果您不想对列列表进行硬编码,则可以执行以下操作:
import jsontraffic = json.load(open('xxx.json'))someitem = traffic.itervalues().next()columns = list(someitem.keys())print columns当我运行它时,它会打印:
[u'medicoes', u'veiculos', u'coord', u'modalidade', u'sentido', u'local', u'pistas', u'regime']
您可以将其与以下内容一起使用:
import jsonimport sqlite3db = sqlite3.connect('fluxos.sqlite')traffic = json.load(open('xxx.json'))someitem = traffic.itervalues().next()columns = list(someitem.keys())columns.remove('medicoes')columns.remove('regime')query = "insert into medicoes (timestamp,{0}) values (?{1})"query = query.format(",".join(columns), ",?" * len(columns))print queryfor timestamp, data in traffic.iteritems(): keys = (timestamp,) + tuple(data[c] for c in columns) c = db.cursor() c.execute(query) c.close()当我尝试使用您的示例数据时,此代码将打印查询,如下所示:
insert into medicoes (timestamp,veiculos,coord,modalidade,sentido,local,pistas) values (?,?,?,?,?,?,?)



