1
In Mangel an einer beliebigen Quelle, wie eine sqlite
Abfrage in Python aus einem Wörterbuch erstellen, ich meine eigene gebaut:Sqlite denkt mir fehlt Bindungen
updates = ', '.join(["`"+field+"`" + '=:'+field for field in information.keys() if field != 'name'])
where = ' WHERE name == :name'
values = {':'+field: value for field, value in information.items()}
query = 'UPDATE firms SET ' + updates + where
c.execute(query, values)
, bekomme ich
sqlite3.ProgrammingError: You did not supply a value for binding 1.
jedoch Diese berauscht mich, wie ich glaube, ich alles, was ich geliefert haben sollte:
In[374]: query
Out[374]: 'UPDATE firms SET `founded`=:founded, `size`=:size, `headquarters`=:headquarters, `type`=:type, `revenue`=:revenue WHERE name == :name'
In[375]: information
Out[375]:
{'founded': '1962',
'headquarters': 'Bentonville, AR',
'name': 'Walmart',
'revenue': '$10+ billion (USD) per year',
'size': '10000+ employees',
'type': 'Company - Public (WMT)'}
Sollte nicht diese Backticks doppelte Anführungszeichen sein? – holdenweb
@holdenweb Ich bin nicht so vertraut mit SQLite, aber wie ich mich von anderswo erinnere, wurden Backticks zu Feldern verwendet, und doppelte Anführungszeichen zur Angabe von String-Werten – FooBar
Nun, ich weiß, dass Strings durch einfache Anführungszeichen in allen bekannten Versionen von SQL begrenzt sind . Bei allen, die ich kenne, erfordern Feldnamen doppelte Anführungszeichen. Vielleicht ist das der Fehler. In der Abfrage benötigen Sie keine Anführungszeichen für die Spaltennamen, da sie alle gültigen SQL-Bezeichner sind. – holdenweb