我在Windows Access中有此表:
我表的标题是数据
名称 - 性别 - 数字
JO-男性-1
ali-男性-2
mo-男性-3
我想使用一个询问名称的输入,我希望我的程序给出该人的详细信息。
我试图这样做:
import pyodbc
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};' +
r'DBQ=C:UsersGebruikerPycharmProjectsTennisDatabase.accdb;')
gegevens = conn.cursor()
question = input("Give a name: ")
SelectString = 'SELECT NAME FROM DATA WHERE DATA.NAME = ' + question + ';'
gegevens.execute(SelectString)
gegevensList = gegevens.fetchall()
print(len(gegevensList), "Spelergegevens : ")
for gegevens in gegevensList:
print (gegevens)
print('')
我得到此错误:
追溯(最近的最新通话): 文件" C:/users/gebruiker/pycharmprojects/opdracht 1.py",第9行,in gegevens.execute(selectstring)pyodbc.error :('07002','[07002] [Microsoft] [ODBC Microsoft Access驱动程序]太少参数。
我不知道我在做什么错以及如何修复它。谁能帮我如何做?
打印出SelectString
,您会看到它看起来像
SELECT NAME FROM DATA WHERE DATA.NAME = Gord;
您的问题是Gord
不被认为是字符串文字。它被解释为列名。
您需要使用参数化查询,例如此
sql = "SELECT [NAME] FROM [DATA] WHERE DATA.NAME = ?"
crsr.execute(sql, question)