如何在python中使用sql输入

问题描述 投票:0回答:1

我在Windows Access中有这个表:

我的表的标题是DATA

NAME - GENDER - NUMBER

如果 - 发现 - 1

阿里 - 男 - 2

MO - 男 - 3

我想使用一个输入,询问一个名字,我希望我的程序提供该人的详细信息。

我试着这样做:

import pyodbc

conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};' +

        r'DBQ=C:\Users\Gebruiker\PycharmProjects\TennisDatabase.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行,在gegevens.execute(SelectString)pyodbc.Error:('07002','[07002] [Microsoft ] [ODBC Microsoft Access驱动程序]参数太少。预期1.(-3010)(SQLExecDirectW)')

我不知道我做错了什么以及如何解决它。任何人都可以帮我怎么做?

python sql pycharm pyodbc
1个回答
1
投票

打印出SelectString,你会看到它看起来像

SELECT NAME FROM DATA WHERE DATA.NAME = Gord;

你的问题是Gord不被认为是字符串文字;它被解释为列名。

您需要使用参数化查询,如下所示

sql = "SELECT [NAME] FROM [DATA] WHERE DATA.NAME = ?"
crsr.execute(sql, question)
© www.soinside.com 2019 - 2024. All rights reserved.