2017-03-04 45 views
0

我有一个名为Students的数据库表,我想用SQL删除一条记录。这里是我的代码:如何在Python中使用MySQL删除记录?

uid = int(input("Please enter students ID: ")) 
c.execute("DELETE FROM Students WHERE ID = (uid) ") 

我想输入ID变量(uid)为提前c.execute

感谢。

+1

答案我猜你正在寻找:'c.execute( “DELETE FROM学生WHERE ID = {}” .format(UID))' – JustRufus

+0

@JustRufus请记住,这个例子中暴露到SQL注入。 – DeepSpace

+0

它不是,因为它是int ...你不能用int注入任何代码。 –

回答

0

基本语法是:

"some string: %s, some int: %i, some double: %d" % (string_var,int_var,double_var) 

这样:

uid = int(input("Please enter students ID: ")) 
c.execute("DELETE FROM Students WHERE ID = %i" % (uid)) 
+1

此代码暴露给SQL注入。 OP应该使用参数化查询。 – DeepSpace

+0

不是真的......它是int ...不脆弱。 –

+0

明天OP将尝试以相同的方式使用字符串。 – DeepSpace

3

不得用作其他答案推荐串插;而在这个特定情况下,它可能是正常的,通常它是不安全的,因为它可以打开SQL注入。相反,使用参数的支持,在execute方法:

uid = int(input("Please enter students ID: ")) 
c.execute("DELETE FROM Students WHERE ID = %s", (uid,)) 
1

什么丹尼尔·罗斯曼说的应该是正确的答案。

您可以插入ID作为.execute方法的参数。有关于这here