[MySQL] "Column count doesn't match value count at row 1"

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
cs8898
User
Beiträge: 2
Registriert: Samstag 16. März 2013, 16:00

Hallo alle zusammen, ich wollt mir ein Skript, schreiben das einfach random Datensätze Erstellt, wozu bracht man denn sowas fragt ihr euch:
Informatik abb 200+ gibts ne 1, mann könnte alles eingeben aber das dauert so lang
Tja leider Scheitert es schon am erstem Test

Code: Alles auswählen

import MySQLdb, md5, random
db=MySQLdb.connect(host="127.0.0.1",user="root",passwd="toor",db="pyLib")
c=db.cursor()
inputt = str(int(random.random()))+",'"+md5.new(str(random.random())).hexdigest()+"',"+str(int(random.random()))
print inputt
c.execute("""INSERT INTO one VALUES (%s);""", (inputt,))
ja ich weis bei ner random zwischen 0-1 kommt wenn man ne integer macht 1 oder 0 raus aber das ist ja egal
das hab ich so aus der MySQLdb Doc raus, noch so ne frage wiso #"""# und nicht einfach #"#.
meine tabelle hat drei Spalten a: int,b: string ,c: int

mein fehler ist dann folgender:

Code: Alles auswählen

# python info-cheat.py

Code: Alles auswählen

0,'696c7ae8210f07a61b5ac4753bcbbd2e',0
Traceback (most recent call last):
  File "info-cheat.py", line 6, in <module>
    c.execute("""INSERT INTO one VALUES (%s);""", (inputt,))
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1136, "Column count doesn't match value count at row 1")
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@cs8898: Die Anzahl der Spalten (3) stimmt nicht mit der Anzahl der übergebenen Werte (1) überein.
BlackJack

@cs8898: Ich würde mal behaupten die Tabelle `one` hat mehr als eine Spalte und Du gibst da nur den Wert für eine Spalte an. Sollten die Kommas in diesem *einen* Wert eigentlich im SQL stehen, dann musst Du sie auch ins SQL schreiben. Mit entsprechend vielen Platzhaltern für die Anzahl der Werte und einem Tupel mit einem Wert für jeden Platzhalter. Und diese Anzahl der Platzhalter und Werte sollte mit der Anzahl der Spalten in der Tabelle übereinstimmen.
Antworten