Как исправить «необработанное исключение типа NSException» в MySql Python - PullRequest
1 голос
/ 09 июля 2019

В настоящее время я создаю базу данных, используя MySql на Python для сбора информации о больницах.Я создал разные программы (например, одну для формы регистрации, одну для базы данных и т. Д.) И импортировал их (для их выполнения) в различные части других моих программ.Однако один из них не выполняет свою функцию и выдает ошибку.

Вот общая процедура:

.Сделайте программу для создания базы данных, используя MySql.Сделайте программу для создания 2 кнопок с помощью Pygame (Зарегистрироваться и войти).Сделайте программу для создания регистрационной формы при нажатии Регистрация.,Отправить подробности об этом в базу данных

В целом, программа работает, если программа кнопок Pygame не включена.Программа базы данных выполняет программу формы регистрации, которая получает введенные данные и отправляется программой базы данных в созданную базу данных.Однако при выполнении формы регистрации, когда я нажимаю кнопку «Регистрация» (в программе «Кнопки»), возникает ошибка.Я попробовал много способов сделать то же самое, даже скопировать код в саму программу, но оба они дают один и тот же результат.

Вот код, который я использовал для Button:

import pygame
pygame.init()
class button():
    def __init__(self, colour, x, y, width, height, text=''):
        self.colour = colour
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.text = text

    def draw(self, win, outline=None):
        if outline:
            pygame.draw.rect(win, outline, (self.x - 2, self.y - 2, self.width + 4, self.height + 4), 0)

        pygame.draw.rect(win, self.colour, (self.x, self.y, self.width, self.height), 0)

        if self.text != '':
            font = pygame.font.SysFont('comicsans', 35)
            text = font.render(self.text, 1, (0, 0, 0))
            win.blit(text, (
            self.x + (self.width / 2 - text.get_width() / 2), self.y + (self.height / 2 - text.get_height() / 2)))

    def isOver(self, pos):
        if pos[0] > self.x and pos[0] < self.x + self.width:
            if pos[1] > self.y and pos[1] < self.y + self.height:
                return True

        return False


def redrawGameWindow():
    win.fill((255, 255, 255))
    loginButton.draw(win)
    registerButton.draw(win)


def register():
    import Databases



run = True
loginButton = button((0, 255, 0), 175, 150, 150, 60, 'Login')
registerButton = button((255, 0, 0), 175, 300, 150, 60, 'Register')
while run:
    redrawGameWindow()
    pygame.display.update()

    for event in pygame.event.get():
        pos = pygame.mouse.get_pos()

        if event.type == pygame.QUIT:
            run = False
            pygame.quit()
            quit()

        if event.type == pygame.MOUSEBUTTONDOWN:
            if loginButton.isOver(pos):
                print("Login")
            if registerButton.isOver(pos):
                register()

        if event.type == pygame.MOUSEMOTION:
            if loginButton.isOver(pos):
                loginButton.colour = (0, 175, 0)
            else:
                loginButton.colour = (0, 255, 0)
            if registerButton.isOver(pos):
                registerButton.colour = (255, 0, 0)
            else:
                registerButton.colour = (175, 0, 0)

Вот код, который я использовал для регистрационной формы:

from tkinter import *
tk = Tk()
tk.geometry('500x500')
tk.title("Registration Form")

Heading = Label(tk, text = "Registration Form", width = 20, font = ('bold', 20))
Heading.place(x = 120, y = 53)

hospitalName = Label(tk, text = "Hospital Name", width = 20, font = ('comicsans', 15))
hospitalName.place(x = 80, y = 130 )

entryBox_hosp = Entry(tk)
entryBox_hosp.place(x = 229, y = 130)

password = Label(tk, text = "Password", width = 20, font = ('comicsans', 15))
password.place(x = 75, y = 180)

entryBox_pass = Entry(tk)
entryBox_pass.place(x = 229, y = 180)

coordinates = Label(tk, text = "Coordinates", width = 20, font = ('comicsans', 15))
coordinates.place(x = 80, y = 230)

entryBox_crds = Entry(tk)
entryBox_crds.place(x = 229, y = 230)

def transfer():
    global hosp_name
    global password
    global coordinates
    hosp_name = entryBox_hosp.get()
    password = entryBox_pass.get()
    coordinates = entryBox_crds.get()

submit = Button(tk, text = "Submit", fg = 'red', width = 20, command = transfer)
submit.place(x = 150, y = 350)

mainloop()

Для базы данных:

import mysql.connector
import Registration_Form
mydb = mysql.connector.connect(
    host = #,
    user = #,
    passwd = #,
    database = #
)

myCursor = mydb.cursor()

sqlFormula = "INSERT INTO UserInfo (hosp_name, password, coordinates) VALUES (%s, %s, %s)"

hospital = [Registration_Form.hosp_name, Registration_Form.password, Registration_Form.coordinates]

myCursor.execute(sqlFormula, hospital)
mydb.commit()

ПРИМЕЧАНИЕ. База данных уже быласоздано.Это всего лишь шаги по заполнению моей базы данных (той, которая выполняется)

Может кто-нибудь предложить способ устранения этой проблемы или написать альтернативный код.

ИСПОЛЬЗОВАННАЯ ВЕРСИЯ ПИТОНА: 3.70,2

...