Python/MySQL-将csv文件导入MySQL
我正在开发一个应用程序,其中包括在目录中选择一个文件(.csv)并将数据导入数据库(mysql),但出现以下错误:Python/MySQL-将csv文件导入MySQL,python,mysql,csv,tkinter,Python,Mysql,Csv,Tkinter,我正在开发一个应用程序,其中包括在目录中选择一个文件(.csv)并将数据导入数据库(mysql),但出现以下错误: Traceback (most recent call last): File "C:\Users\TESTES\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__ return self.func(*args) File "C:/Use
Traceback (most recent call last):
File "C:\Users\TESTES\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/Users/TESTES/PycharmProjects/Heiken/tess.py", line 16, in import_file
with open(browse_file):
TypeError: expected str, bytes or os.PathLike object, not function
以下是测试界面中的完整代码和功能:
from tkinter import *
import pymysql
from tkinter import filedialog
tess = Tk()
def browse_file():
fname = filedialog.askopenfilename(filetypes=(("Template files", "*.csv"), ("All files", "*")))
print(fname)
def import_file():
conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='omnia')
print('connect successfull!')
with open(browse_file):
statm = "INSERT INTO omniacademp(n_id, n_cod, c_cnpjcpf, c_razao, c_enderecom, c_nr, c_compl, c_cep, c_bairro, c_cidade, c_estado, c_telefone, c_email, c_celular, c_email2) VALUES (0, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
cursor = conn.cursor()
cursor.execute(statm)
conn.commit()
bt = Button(tess, text='browse file', command=browse_file)
bt.place(x=10, y=10)
bt = Button(tess, text='import file', command=import_file)
bt.place(x=10, y=45)
tess.mainloop()
首先,您应该从
browse_file
函数返回路径。试试这个:
from tkinter import *
import pymysql
from tkinter import filedialog
tess = Tk()
def browse_file():
return filedialog.askopenfilename(filetypes=(("Template files", "*.csv"), ("All files", "*")))
def import_file():
conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='omnia')
print('connect successfull!')
with open(browse_file()):
statm = "INSERT INTO omniacademp(n_id, n_cod, c_cnpjcpf, c_razao, c_enderecom, c_nr, c_compl, c_cep, c_bairro, c_cidade, c_estado, c_telefone, c_email, c_celular, c_email2) VALUES (0, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
cursor = conn.cursor()
cursor.execute(statm)
conn.commit()
bt = Button(tess, text='browse file', command=browse_file)
bt.place(x=10, y=10)
bt = Button(tess, text='import file', command=import_file)
bt.place(x=10, y=45)
tess.mainloop()
调用
cursor.execute()
时,缺少要填充所有占位符的值列表。您从未从文件中读取。打开(浏览文件):
没有任何意义<代码>浏览文件是一个函数,而不是文件名。如果将browse_file()
更改为do返回fname
,则可以将此更改为,并将open(browse_file())更改为f:
,然后从f
读取。