2010-12-03 10 views
0

Ich habe eine Variable row_data = (searchindex, asin, title, browsenode, salesrank, brand, listprice, saleprice) und eine dieser beiden Elemente könnten NULL sein, in eine Datenbank einzufügen, ich binWie kann ich in eine MySQL-Tabelle in Python mit einer variablen Anzahl von Spalten einfügen?

sql = "INSERT INTO table (searchindex,asin,title,browsenode, salesrank, brand, listprice, saleprice) VALUES ('%s','%s','%s','%s', '%s', '%s', '%f', '%f')" % row_data 

verwenden, aber das ist nicht sehr skalierbar, wie ich mehr Felder in row_data hinzuzufügen. Gibt es einen effizienteren Weg, dies zu tun?

Dank

+0

"Aber das ist nicht sehr skalierbar, wie ich mehr Felder in row_data hinzufügen"? "Ja wirklich?" Wie oft ändern Sie das Schema? Alle paar Sekunden? Oder einmal im Monat? –

+0

Es ist schwierig, mit allen% s und% fs zu lesen, so dass es schwierig ist, den Überblick zu behalten – Shamoon

+0

Erstens, verwenden Sie keine String-Substitution. Zweitens, erhalte ein ORM. –

Antwort

3

Bitte verwenden Sie String-Interpolation nicht SQL zu konstruieren, da es sehr unsicher ist. Verwenden Sie die entsprechenden Funktionen in Ihrer MySQL-Bibliothek, um die Werte als Parameter an die Abfrage zu übergeben.

Die Anzahl der Spalten in einer Tabelle sollte sich kaum ändern, wenn Ihr Programm entwickelt wird. Vielleicht einmal alle paar Monate, zu diesem Zeitpunkt ist es selten schwierig, Ihr SQL zu aktualisieren.

Alternativ können Sie auch ein System wie SQLAlchemy verwenden, das eine Menge davon für Sie erledigt und Sie daran hindert, viel SQL selbst zu schreiben.

+0

Was sind die Funktionen in MySQLd? – Shamoon

+0

+1: Holen Sie sich ein ORM. Beenden Sie die Verwendung von Raw SQL. –

Verwandte Themen