Вставка функции внутри другой функции в python - PullRequest
0 голосов
/ 28 января 2020

У меня есть небольшое приложение, написанное на tkinter, python. Я хотел бы выбрать txt-файл, нажав кнопку в tkinter и автоматически отправить его в мою базу данных SQL. На данный момент у меня есть функция, отвечающая за выбор файла из моего dis c и печать моего txt-файла в консоли:

def OpenFile():
    name = askopenfilename(initialdir="",
                       filetypes =(("Text File", "*.txt"),("All Files","*.*")),
                       title = "Choose a file."
                       )
    print(name)
    #Using try in case user types in unknown file or closes without choosing a file.
    try:
        with open(name,'r') as UseFile:
            print(UseFile.read())
    except:
        print("No file exists")

И функция, отвечающая за отправку на SQL, выглядит следующим образом (txt file is вставлен внутрь функции):

def Tabela():
    with open("pom1.txt") as infile:
        for line in infile:
            data = line.split("\t")
            print(data)
            query = ("INSERT INTO Pomiary_Obwod_90(Pomiar_x, Pomiar_y, Pomiar_z) VALUES"
                 "(" + data[1] + ", " + data[2] + ", " + data[3] + ");")
            cursor.execute(query, data)
            con.commit()
   return

Кто-нибудь знает, что я могу сделать, чтобы соединить эти две функции? Идея состоит в том, чтобы выбрать txt-файл из функции OpenFile (), а затем приложение должно автоматически отправить его в базу данных.

1 Ответ

2 голосов
/ 28 января 2020

Заставить Tabela принять файл в качестве параметра вместо жесткого кодирования pom1.txt и вызвать Tabela(UseFile) из OpenFile().

Кроме того, поскольку вы вызываете cursor.execute() с параметрами Вы не должны объединять элементы data в query, просто поместите заполнители в запрос.

def OpenFile():
    name = askopenfilename(initialdir="",
                       filetypes =(("Text File", "*.txt"),("All Files","*.*")),
                       title = "Choose a file."
                       )
    print(name)
    #Using try in case user types in unknown file or closes without choosing a file.
    try:
        with open(name,'r') as UseFile:
            Tabela(UseFile)
    except:
        print("No file exists")


def Tabela(infile):
    for line in infile:
        data = line.strip().split("\t")
        print(data)
        query = ("INSERT INTO Pomiary_Obwod_90(Pomiar_x, Pomiar_y, Pomiar_z) VALUES (%s, %s, %s)")
        cursor.execute(query, data)
        con.commit()
   return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...