Python如何在Access上显示数据(SQL)?

时间:2018-02-18 08:13:47

标签: python sql ms-access select tkinter

我希望Python能够显示来自Access on Label的数据。我试着像这样做,但它不起作用。没有错误,但Label显示pypyodbc.Cursor object at 0x05E02990。我该怎么办?谢谢

from tkinter import *
import pypyodbc
import ctypes

#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 ()

form = Tk ()
form.title ("Main")
form.geometry ('400x400')

form2 = Tk ()
form2.title ("Main")
form2.geometry ('400x400')
form2.withdraw()

def Show():
    cursor.execute ("SELECT Law_ID FROM Laws WHERE Fine=1")
    a=cursor.execute
    for a in cursor:
        print ("Law ID where Fine is 1 is", a)
        Label(form2, text=cursor).pack() 
    form.withdraw()
    form2.deiconify()

Button(form, text = 'PUSH ME', command = Show).pack()

form.mainloop ()

con.commit ()
cursor.close ()
con.close ()

1 个答案:

答案 0 :(得分:2)

错误是因为您正在打印光标对象的值,它始终是一个位置,在您的情况下" 0x05E02990"。要获取光标检索的值,您必须编写:

variable_name = cursor.fetchall()

在您的代码中:

def Show():
    cursor.execute ("SELECT Law_ID FROM Laws WHERE Fine=1")
    a=cursor.fetchall()
    ##print as you like    

它将获取光标

检索的所有数据