#python #mysql #mysql-python
Вопрос:
##GUI FILE root = Tk() root.title("Inventory Management") root.geometry('1000x600') def add_inventory(): myInventory = product.Product() myInventory.setProductID(productID.get()) myInventory.setProdName(productName.get()) myInventory.addProduct() productID = IntVar() productName = StringVar() prodIDentry = Entry(productframe, width=22, textvariable=productID) prodNameentry = Entry(productframe, width=22, textvariable=productName) btn_add = Button(productframe, text="Add", font="Verdana 10 bold", command = add_inventory)
##product file class Product: def __init__(self): self.ProductID = '' self.ProdName = '' prodID = self.getProductID() prodname = self.getProdName() def getProductID(self): return self.ProductID def setProductID(self, value): self.ProductID = value def getProdName(self): return self.getProdName def setProdName(self, value): self.ProdName = value def addProduct(self): mydb = mysql.connector.connect( host='localhost', database='PHP', user='root', password='' ) mycursor = mydb.cursor() sql1 = "INSERT INTO product (ProductID, ProdName) VALUES (%s,%s)" val = (prodID, prodname) mycursor.execute(sql1, val) mydb.commit()
##product file class Product: def __init__(self): self.ProductID = '' self.ProdName = '' prodID = self.getProductID() prodname = self.getProdName() def getProductID(self): return self.ProductID def setProductID(self, value): self.ProductID = value def getProdName(self): return self.getProdName def setProdName(self, value): self.ProdName = value def addProduct(self): mydb = mysql.connector.connect( host='localhost', database='PHP', user='root', password='' ) mycursor = mydb.cursor() sql1 = "INSERT INTO product (ProductID, ProdName) VALUES (%s,%s)" val = (prodID, prodname) mycursor.execute(sql1, val) mydb.commit()
У моей программы есть графический интерфейс, который требует ввода данных пользователем, затем он примет ввод и внесет его в базу данных одним нажатием кнопки. Это несколько моих переменных, которые нужно вставить. Но он продолжает возвращаться:_mysql_connector.Ошибка MySQLInterfaceError: метод типа Python не может быть преобразован
Комментарии:
1. Что произойдет, если вы
print(val)
непосредственно перед казнью?2. @AKX привет, извините, я только что добавил больше кодов в свою проблему, посмотрите, пожалуйста :/ мне нужна помощь
3. Ваш код не имеет смысла. Во-первых, теперь в теле класса есть код MySQL, вне какой-либо функции? Кроме
getProductID()
того, в коде нигде нет функции.4. @AKX я только что отредактировал снова, мне так жаль, что я не очень хорошо знаком с тем, как показать проблему… вам лучше понять сейчас?
5. Мне очень жаль, но нет. Если у вас есть проблемный сегмент, который вызывает
self.getProductID()
функцию, вам также следует включить эту функцию в сообщение, например.
Ответ №1:
Ваша проблема заключается в функции
def getProdName(self): return self.getProdName
Он возвращает саму себя ( getProdName
), а не переменную имени продукта.
Соединитель MySQL говорит
Ошибка MySQLInterfaceError: метод типа Python не может быть преобразован
поскольку он не может преобразовать метод ( getProdName
) во что-то, что мог бы понять MySQL.
Измените getProdName()
метод для возврата ProdName
:
def getProdName(self): return self.ProdName
(или вообще избавьтесь от этого; сеттеры и геттеры не очень популярны в Python.)
Комментарии:
1. ах, теперь я это вижу… Спасибо!!!!