Приложение Query Builder с использованием Python - PullRequest
0 голосов
/ 18 марта 2019

Привет, я создаю настольное приложение, использующее Python, которое создает операторы вставки из файла Excel в качестве входных данных, оно работает нормально, но печатает дату в другом формате. Вот входной файл

enter image description here

и вот мой код: -

import os
from tkinter import *
from pandas import *
import tkinter.font
import tkinter.messagebox




#pyinstaller --onefile --windowed QueryGenGUI.py


def SQL_Insert(SOURCE, TARGET):#function to generate query
    sql_texts = []
    for index, row in SOURCE.iterrows():
        sql_texts.append(
            'INSERT INTO ' + TARGET + ' (' + str(', '.join(SOURCE.columns)) + ')   VALUES ' + str(tuple(row.values))+";")

    return ('\n'.join(sql_texts))




def insert_command():
    if (file_name.get() == "" or table_name.get() == ""):
        tkinter.messagebox.showwarning("Warning", "Please Fill all the fields.")
        pass
    elif(os.path.isfile(file_name.get())):
        input_file_name = file_name.get()
        df = pandas.read_excel(input_file_name)
        #df = df.replace(np.nan, 'null')
        #df = df.astype('object').where(pandas.notnull(df), )

        output = SQL_Insert(df, table_name.get())
        with open('RESULT.sql', 'w+')as f:
            f.write(output)
        #with open('RESULT.sql', 'r')as f:
         #   newoutput=f.read().replace(', nan', ',null')
            #newoutput1 =newoutput.replace(', Timestamp', ', To_DATE')
        #with open('RESULT.sql', 'w+')as f:
        #    f.write(newoutput)

        tkinter.messagebox.showinfo("Information", "Done.")

    else:
        tkinter.messagebox.showinfo("Error", "No Such File Exists.")




def myFont():
    myFont=tkinter.font.Font(size=12)

window=Tk()

window.wm_title("Query Generator")
window.configure(background="old lace")

l1=Label(window,text="File Name",fg="black",bg="gray",font=myFont)
l1.grid(row=0,column=0)

l2=Label(window,text="Table Name",fg="Black",bg="gray",font=myFont)
l2.grid(row=2,column=0)


file_name=StringVar()
e1=Entry(window,textvariable=file_name)
e1.grid(row=0,column=1)

table_name=StringVar()
e2=Entry(window,textvariable=table_name)
e2.grid(row=2,column=1)


b1=Button(window,text="Insert Statement",bg="purple",fg="white", width=13,command=insert_command)
b1.grid(row=0,column=5)

b2=Button(window,text="Update Statement",bg="purple",fg="white", width=13)
b2.grid(row=1,column=5)

b6=Button(window,text="Close", width=13,bg="red",command=window.destroy)
b6.grid(row=2,column=5)

window.geometry('400x100')
window.mainloop()

Вот мой вывод: -

    INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (1, '3666 21st St', 'San Francisco', 'CA 94114', 'USA', 'Madeira', 8, Timestamp('2018-01-12 00:00:00'));
INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (2, '735 Dolores St', 'San Francisco', 'CA 94119', 'USA', 'Bready Shop', 15, Timestamp('2018-01-12 00:00:00'));
INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (3, '332 Hill St', 'San Francisco', 'California 94114', 'USA', 'Super River', 25, Timestamp('2018-01-12 00:00:00'));
INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (4, '3995 23rd St', 'San Francisco', 'CA 94114', 'USA', "Ben's Shop", 10, Timestamp('2018-01-12 00:00:00'));

Вот что я ожидаю: -

INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (1, '3666 21st St', 'San Francisco', 'CA 94114', 'USA', 'Madeira', 8,  TO_DATE('12/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS');
INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (2, '735 Dolores St', 'San Francisco', 'CA 94119', 'USA', 'Bready Shop', 15, TO_DATE('12/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS');
INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (3, '332 Hill St', 'San Francisco', 'California 94114', 'USA', 'Super River', 25,TO_DATE('12/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS');
INSERT INTO ADI (ID, Address, City, State, Country, Supermarket Name, Number of Employees, DATE)   VALUES (4, '3995 23rd St', 'San Francisco', 'CA 94114', 'USA', "Ben's Shop", 10, TO_DATE('12/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS');

Я пытался сохранить вывод в файл, а затем заменить его, но, к сожалению, он не работает. Пожалуйста, помогите мне здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...