Daten für Spalte 'url' in Zeile 1 abgeschnitten - Fehler beim Programmieren mit Python Django

8

Die Fehlermeldung, die ich bekam, war

%Vor%

Als erstes überprüfte ich, ob die URL-Zeichenfolge länger als die Feldlänge ist, aber sie ist tatsächlich viel kürzer. Datenbankdesign

%Vor%

Tabellendesign

%Vor%

Ich drucke die Längen der Daten aus, die ich in die Tabelle einfügen möchte (ich teste nur mit einer URL):

%Vor%

Ich benutzte einen Cursor, der von Django.db.connection erstellt wurde. Um informativer zu sein, füge ich den kompletten Datenbankabfragebefehl ein, den ich an cursor.execute()

übergeben habe %Vor%

Das Lustige ist, dass der obige Befehl funktioniert, wenn ich in die MySQL-Befehlszeile kopiere und einfüge. Keine Fehlermeldungen und die Daten werden nur korrekt eingefügt.

Was läuft falsch?

    
fanchyna 19.06.2012, 18:54
quelle

2 Antworten

1

cursor.execute behandelt MySQL, wenn Sie es korrekt verwenden. Einige Beispiele hier

Die Grundidee besteht darin, %s in der Raw-SQL-Zeichenfolge zu verwenden, in der die Rohwerte enthalten sind, und dann ein zweites Argument an cursor.execute() zu übergeben, das ein Tupel (oder Array) der Werte in der richtigen Reihenfolge ist. In Ihrem Fall würde dies wie folgt aussehen:

%Vor%     
Jeremy Lewis 25.11.2014 07:40
quelle
0

Sie sollten urllib.unquote(url) ausprobieren, um die URL-Zeichenkette vor dem Einfügen in die db zu entfernen . Die Anführungszeichen-Markierung%, die in Ihrer Zeichenfolge vorkommt, ist ein Sonderzeichen für MySQL und kann Ihre Transaktion beeinträchtigen.

Ihr Beitrag sollte lauten:

%Vor%

Beachten Sie, dass MySQL% nur in Musterkontexten als speziell behandelt. Also könnte am Ende hier etwas mit Django ORM nicht stimmen.

    
Chris 24.07.2012 20:54
quelle

Tags und Links