0

すべて正常に動作しているように見えたので、Python 用の MySQLdb という名前のモジュールを試してみましたが、データを送信しても実際の DB には何も挿入されません。私は PHP を通じて知っていることから離れて、ドキュメントを調べましたが、有用なものはないようです。Python とデータベースを使って練習したかっただけです。これが私の現在のコードです (コードを判断しないでください。mysql が関与する部分のみを判断してください。もちろん、私が大幅に台無しにしている場合を除きます!):

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()
4

1 に答える 1

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モジュールの例をいくつか使用しているように見えますか?

于 2013-03-15T14:12:22.967 に答える