2016-07-04 19 views
0

Ich bin neu bei der Verwendung von MySQL-Connector für Python und ich habe die unten angegebenen Daten in eine Tabelle namens "region_based_billings" eingefügt werden. Ich habe alle möglichen Wege versucht, diese Daten einzufügen und es scheint, dass ich eine Syntax nicht genau weiß, wo und für welchen Datentyp? .Fehler beim Einfügen der Daten mit python.mysql Konnektor

date = '2016-06-29' 
    region = 'Asia Pacific' 
    account_type = 'PRODUCTION ACCOUNT' 
    product_type = 'AmazonEC2' 
    total= 10.58383305 
    count = 21 

    cursor = self.testdb.cursor() 
    cursor.execute('INSERT INTO iaas.region_based_billing (date, region, account type, product type, total amount, no of products) VALUES (%s, %s, %s, %s, %s, %s)',(date, region, account_type,product_type,total,count)) 

    self.testdb.commit() 
    self.testdb.close() 

Meine Tabellenobjekte sind:

desc iaas.region_based_billing; 

    date     date NO   PRI  
    region     varchar(50) NO   
    account type   varchar(65) NO   
    product type   varchar(65) NO   
    total amount   float NO   
    no of products   int(255) NO   

Ich weiß, es ziemlich einfach ist, nicht sicher, was genau das Problem verursacht. Ich habe versucht, einfache Anführungszeichen für den Datentyp '% s' zu behalten, aber es hat trotzdem nicht funktioniert.

Auch hier ist der Fehler

mysql.connector.errors.ProgrammingError: 1064 (42000): Sie haben einen Fehler in der SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax in der Nähe von 'Typ, Produkttyp, Gesamtmenge, Anzahl der Produkte' zu verwenden. VALUES ('2016-06-29', 'Asia Pa' in Zeile 1

...

Antwort

1

entfernen Raum zwischen Spaltennamen Spaltenname ein einzelnes Wort oder Wörter seprated durch _ sollte In Ihrem Fall Spaltenname Lücke aufweisen, so sollten diese Spalte sein: -

account type = account_type 
product type = product_type 

und so weiter ...

+0

Ahh dank Kumpel, dass ihr meinen weißen Raum gearbeitet, dass es das ganze Problem –

+0

gut, halten –

0

Die Leerstellen wurden entfernt und das Problem wurde gelöst. Danke.

Serial_no  int(11) NO PRI  auto_increment 
date   date NO   
region   varchar(50) NO   
account_type varchar(65) NO   
product_type varchar(65) NO   
total_amount float YES   
no_of_products int(255) NO   
0

Hier hat kein Produkt den Datentyp int. Aber Sie verwenden es hat eine Zeichenfolge. Für Integer müssen Sie % d verwenden.

cursor.execute ('INSERT INTO iaas.region_based_billing (Datum, Region, Kontoart, Produkttyp, Gesamtbetrag, Anzahl der Produkte) WERTE (% s,% s,% s,% s,% f, % d)‘, (Datum, Region, count_type, product_type, total, zählt))

You can check this example.

+0

verursacht Eigentlich könnten Sie% s für alle Datentypen verwenden, die den MySQL-Connector verwenden. % d wird nicht benötigt https://dev.mysql.com/doc/connector-python/en/connector-python-example-cursor-transaction.html –