sqlite3代码,用于动态插入要删除的行数据的列值

uwopmtnx  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(248)

我使用python+sqlite来编写代码。我一直在尝试创建一个块,用户可以在其中输入一个列值来删除sqlite3数据库中相应的行数据。
实际上,下面的代码片段可以工作,但我必须手动输入所有电子邮件地址。我想动态地插入这个sqlite代码行的电子邮件,以便删除相应的记录

DELETE FROM Records WHERE email = 'xyz@xyz.com'

我试过以下方法:;

entered_email = input('enter email: ')
string = f" 'DELETE FROM Records WHERE email = '{entered_email}'"
c.execute(string)

它不起作用。我得到下面的错误行

sqlite3.OperationalError: near "'DELETE FROM Records WHERE email = '": syntax error

我将非常高兴,如果我能得到一个解释或如何最好地进行这方面的描述。谢谢

1sbrub3j

1sbrub3j1#

不要在查询字符串中串联用户输入-这会将代码切换到sql注入。
相反,请使用参数化查询:

entered_email = input('enter email: ')
c.execute('DELETE FROM Records WHERE email =  ?', (entered_email, ))

相关问题