messwerte - python plotten



Was ist der effektivste Weg zum Einfügen von Python-Wörterbüchern/Listen in die SQL-Datenbank? (1)

Wenn Ihre Daten so strukturiert sind, würde es sich eher für eine dokumentenorientierte Datenbank eignen (Mongo / Couch etc ...)

Du kannst mit so etwas durchkommen ... Ich denke, mit repr ist ein bisschen zu schlau ...

insert_sql = 'INSERT INTO conditions_bratislava(%s) values(%s)'
cols = ', '.join(somedict)
vals = ', '.join('?' * len(somedict)) # or whatever qparam is required
to_execute = insert_sql % (cols, vals)
some_cursor.execute(to_execute, somedict.values())

Als Randnotiz:

value_type = type(value)
if value_type is unicode:

Sollte geschrieben werden als:

if isinstance(value, unicode):

Stellen Sie sich vor, Sie haben ein Schlüsselwert-Python-Wörterbuch (oder eine Liste) mit größeren Mengen von Elementen. Angenommen, Sie lesen eine größere JSON-Datei und möchten deren Inhalt in der MySQL-Tabelle mit Schlüsseln als Namen von Spalten und Werten als Werte selbst speichern.

JSON Beispiel:

"display_location": {
    "city":"Bratislava",
    "state_name":"Slovakia",
    "country_iso3166":"SK",
    "latitude":"48.20000076",
    "longitude":"17.20000076",
}

Dann ist es ziemlich ineffizient, SQL-Insert wie folgt manuell zu schreiben:

INSERT INTO TABLE (city, state_name, country_iso3166, latitude, longitude) VALUES('%s','%s','%s','%s','%s')
% (Bratislava, Slovakia, SK, 48.20000076, 17.20000076);

(Nun, es ist in Ordnung mit fünf Werten, aber stellen Sie sich vor, es gibt zum Beispiel fünf hundert von ihnen.)

Gibt es irgendeine Python-Klasse / Methode für effektives und kurzes SQL-Einfügen? Ich habe diesen Code geschrieben:

for key,value in list.iteritems():
  value_type = type(value)
    if value_type is unicode:
      vars_to_sql.append(value.encode('ascii', 'ignore'))
      keys_to_sql.append(key.encode('ascii', 'ignore'))
    else:
      vars_to_sql.append(value)
      keys_to_sql.append(key)

keys_to_sql = ', '.join(keys_to_sql)

Danach sieht der Einsatz viel einfacher aus:

INSERT INTO conditions_bratislava(%s) VALUES %r" % (keys_to_sql,  tuple(vars_to_sql),)

Es kann Tausende von Werten geben, und Sie werden mit dieser Einfügung noch in Ordnung sein.

Beachten Sie diese Bedingung, die Unicode-Zeichenfolgen dekodiert, so dass Sie vor jedem Wert keine Buchstaben "u" haben.

Also, gibt es eine effektivere und vorbereitete Klasse oder Methode, wie man viele Werte in den gleichen einfachen Ansatz mit kurzer INSERT-Zeichenfolge einfügen kann?





insert