Ich mache eine Datenbank-Klasse in Python, um bei der Verwaltung meiner MySQL-Datenbank zu helfen.Erstellen einer Klasse in Python mit mysqldb
Der Code unten bis zur letzten Zeile arbeitet
import MySQLdb
class Database:
...
def insert(self, query):
try:
self.cursor.execute(query)
self.connection.commit()
except:
self.connection.rollback()
...
db = Database()
db.insert('INSERT INTO items (title) VALUES ("tester2");')
mystring = "TEST"
db.insert('INSERT INTO items (title) VALUES (%s);', mystring)
Die letzte Zeile verursacht den Fehler:
db.insert('INSERT INTO items (title) VALUES (%s);', mystring)
TypeError: insert() takes exactly 2 arguments (3 given)
habe ich versucht, den Inhalt innerhalb der db.insert des Pars neu zu ordnen, aber ich kann nicht verstehen aus der Syntax.
Zum Beispiel habe ich versucht, dies als gut, aber es weder Einlagen noch gibt einen Fehler:
db.insert('''"INSERT INTO items (title) VALUES (%s);", mystring''')
Meine Frage ist, kann ich die Syntax rechts, um erhalten legen Sie das% s, oder ich tue muss ich die Einfügefunktion meiner Klasse ändern?
EDIT 1
ich die vorgeschlagenen Linien versucht:
db.insert("INSERT INTO items (title) VALUES (%s);"% mystring)
und
db.insert('INSERT INTO items (title) VALUES {value};'.format(value=mystring))
gab weder Fehler noch einen Wert in die Datenbank inputed
EDIT 2
Whole-Code für Haupt, dass die Datenbank-Klasse aufruft:
wenn Name == "Haupt":
db = Database()
mystring = 'Tester1'
mystring2 = 'Tester2'
db.insert('INSERT INTO items (title) VALUES ("Tester3");') #works
db.insert("INSERT INTO items (title) VALUES (%s);" % mystring) #does not work
db.insert('INSERT INTO items (title) VALUES {value};'.format(value=mystring2)) #does not work
print db.query('SELECT * FROM items;')
Sie gerade in der Zeichenfolge übergeben wollen – Bahrom
'db = Database' wo ist die Klammern? – haifzhan
@ Haifzhan du hast Recht, repariert es, (es war korrekt in meinem Code) – Rorschach