【发布时间】:2017-08-22 08:26:14
【问题描述】:
我想通过以 tkinter 的形式编写数据来将数据添加到 Access,但我有一个错误。怎么了?我试图改变con.close ()的位置,但它没有帮助,如果我把它放在def之前,我什至会出现另一个错误
from tkinter import *
import pypyodbc
import ctypes
form=Tk ()
form.title ("Add data")
form.geometry ('400x200')
#Create connection
con = pypyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:/Users/HP/Desktop/PITL;DBQ=C:/Users/HP/Desktop/PITL/PITL.mdb;')
cursor = con.cursor ()
a = Entry (form, width=20, font="Arial 16")
a.pack ()
b = Entry (form, width=20, font="Arial 16")
b.pack ()
def Add (event):
cursor.execute ("INSERT INTO Crime (`Number_of_article`, `ID_of_criminal`) VALUES (?, ?)", (a, b))
Button=Button(form, text = 'PUSH ME')
Button.pack ()
Button.bind ('<Button-1>', Add)
form.mainloop ()
con.commit ()
cursor.close ()
con.close ()
错误是:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\HP\Desktop\PITL\ADD DATA.py", line 19, in Add
cursor.execute ("INSERT INTO Crime (`Number_of_article`, `ID_of_criminal`) VALUES (?, ?)", (a, b))
File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pypyodbc-1.3.4-py3.6.egg\pypyodbc.py", line 1491, in execute
self._BindParams(param_types)
File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pypyodbc-1.3.4-py3.6.egg\pypyodbc.py", line 1296, in _BindParams
if param_types[col_num][0] == 'u':
TypeError: 'type' object is not subscriptable
【问题讨论】:
-
因为
a/b是Entry对象...我猜你需要它们的值,例如:a.get()和b.get()在你的@987654331 @...? -
@JonClements,是的,我需要他们的价值观
-
在“eg”之后的第一条评论中,您认为与您当前的代码有什么不同...?
-
@Bagacan 你能不能edit你的问题表明......?
-
@JonClements 哈利路亚!这是工作。谢谢,我只是犯了一个愚蠢的错误。 (
def Add (): cursor.execute ("INSERT INTO Crime (Number_of_article,ID_of_criminal) VALUES (?, ?)", (a.get(), b.get())) con.commit () cursor.close () con.close ()我不得不写这个
标签: python ms-access tkinter pypyodbc