2013-03-15 6 views
0

Я пробовал модуль с именем MySQLdb для python, так как все, казалось, работало нормально, но когда я отправляю свои данные, в фактическую БД ничего не вставляется. Я учусь тому, что знаю через PHP, и я просмотрел документацию, но, похоже, ничего полезного. Я просто хотел практиковать с Python и Базы данных. Вот мой текущий код (Пожалуйста, не судите код, только те части, в которых участвует MySQL, если, конечно, я не имею в главно Мессинг!):Mysql python не вставляя данные

from MySQLdb import * 
from Tkinter import * 
#Standard Imports (IMO) 
import sys, random, math 

class dataStoreTest: 

    def __init__(self): 

     self.root = Tk() 
     self.root.title("Database Test") 
     self.inputFrame = Frame(self.root) 

     #TextVariables 
     self.fName = StringVar() 
     self.lName = StringVar() 
     self.DOB = StringVar() 
     self.email = StringVar() 

     #MySQLdb Variables 
     self.connection = connect("127.0.0.1", "user", "pass", "dbname") 

     self.setupGUI() 

     self.root.mainloop() 

    def setupGUI(self): 

     #Title/Header 
     title = Label(self.root, text="DataBase Test", fg="Black") 
     title.pack() 

     #Input Fields 
     fNameLab = Label(self.root, text="First Name: ", width=14, fg="steelblue") 
     fNameLab.pack() 
     fNameEnt = Entry(self.root, textvariable=self.fName, width=14, bg="gray") 
     fNameEnt.pack() 

     lNameLab = Label(self.root, text="Last Name: ", width=14, fg="steelblue") 
     lNameLab.pack() 
     lNameEnt = Entry(self.root, textvariable=self.lName, width=14, bg="gray") 
     lNameEnt.pack() 

     dobLab = Label(self.root, text="DOB (YYYY-DD-MM):", width=18, fg="steelblue") 
     dobLab.pack() 
     dobEnt = Entry(self.root, textvariable=self.DOB, width=14, bg="gray") 
     dobEnt.pack() 

     emailLab = Label(self.root, text="E-Mail Address:", width=20, fg="steelblue") 
     emailLab.pack() 
     emailEnt = Entry(self.root, textvariable=self.email, width=35, bg="gray") 
     emailEnt.pack() 

     subBut = Button(self.root, command=self.verify, text="Submit") 
     subBut.pack() 

    def verify(self): 
     self.firstName = self.fName.get() 
     self.lastName = self.lName.get() 
     self.DOBirth = self.DOB.get() 
     self.emailAddress = self.email.get() 

     #Basic Validation 
     if self.firstName != "" and self.lastName != "" and self.DOBirth != "" and self.emailAddress != "": 
      if "@" in self.emailAddress and self.emailAddress.find("@") < (len(self.emailAddress)- 3): 
       print("All there!") 
       self.storeData() 
      else: 
       print("Invalid Email Address") 
     else: 
      print("Information Is Missing, Please Check Your Inputs.") 

    def storeData(self): 

     if self.connection: 
      print("DB Connection was a great success...") 
      print("Now entering data...") 
      self.connection.query("""INSERT INTO test (fName,lName, DOB, email) 
VALUES ('self.firstName', 'self.lastName', 'self.DOBirth', 'self.emailAddress')""") 
     else: 
      print("Failed To Connect to DataBase :c ") 

if __name__ == "__main__": 

    dataStoreTest() 
+0

Возможный дубликат http://stackoverflow.com/questions/1387573/mysql-insert-data-does-not-get-stored-in-proper-db-only-temporary – kgr

ответ

1

Использование MySQLDb, вы можете сделать что-то вроде:

self.db = connect("127.0.0.1", "user", "pass", "dbname") 
self.cursor = self.db.cusor() 
self.cursor.execute("""INSERT INTO test (fName,lName, DOB, email) 
VALUES ('self.firstName', 'self.lastName', 'self.DOBirth', 'self.emailAddress')""") 
self.db.commit() 

Найдено в учебнике http://zetcode.com/db/mysqlpython/

это выглядит, как вы используете несколько примеров из _mysql модуля?

Смежные вопросы