sqlite3.OperationalError?

1 Antwort

Groß und Kleinschreibung fehlerhaft?

Spezies     STRING,

und im Code verwendest du

INSERT INTO beobachtungen (spezies, ...

Weiß grad nicht auswendig ob SQLite case-sensitive ist oder nicht. Später bei

... VALUES (spezies, ...

willst du wahrscheinlich Variablennamen verwenden. Die werden aber nicht aufgelöst! Daher versuchst du den String alter in das DB-Feld Alter zu schreiben!

Woher ich das weiß:Berufserfahrung – Softwareentwickler f. Web, Win. & Linux (seit 2001)

RouteUS66 
Fragesteller
 10.10.2018, 20:22

Die selbe Idee ist mir gerade auch gekommen. Ich glaube nicht, dass es case-sensitive ist.
Demnach müsste das dann so ausschauen?

[code]sql_command = """INSERT INTO beobachtungen(Spezies, Anzahl, Geschlecht, Alter, Datum, Uhrzeit, Wetter, Bemerkungen, Lokation, Photo) VALUES (""", spezies, ", ", "anzahl", ", ", geschlecht, ", ", alter, ", ", datum, ", ", uhrzeit, ", ", wetter, ", ", bemerkungen, ", ", lokation, ", ", photo, ");"[/code]

Die dazugehörige Ausgabe dann:

[code]('INSERT INTO beobachtungen(Spezies, Anzahl, Geschlecht, Alter, Datum, Uhrzeit, Wetter, Bemerkungen, Lokation, Photo) VALUES (', u'Blauracke', ', ', 'anzahl', ', ', u'm\xe4nnlich', ', ', 1.6, ', ', '12.06.2018', ', ', '12:32', ', ', u'regnerisch, 9\xb0C', ', ', u'aufgeplustert, dicht beieinander sitzend', ', ', u'Hornberg, Drachenwald', ', ', u'blauracke-hornberg.jpg', ');')[/code]

Und ja, das Problem mit Sonderzeichen muss ich auch noch lösen.

0
Mark Berger  10.10.2018, 20:24

So:

>>> s = "bla"
>>> d = 123
>>> print("insert into s, d values ('" + s + "', " + str(d) + ")")
insert into s, d values ('bla', 123)

und nicht so:

>>> print("insert into s, d values (s, d)")
insert into s, d values (s, d)
>>> print("""insert into s, d values (s, d)""")
insert into s, d values (s, d)
0