2015-05-09 28 views
1

我试图从MySQL数据库中更新和删除一行字段,该行的名称与键入的值相同。我正在使用python 2.7和MySQLdb。下面是脚本的一部分:使用Python在MySQL中更新和删除键值

Value = int(input("Type a number between 1 and 10: ")) 
cursor.execute("DELETE FROM test WHERE name=Value ") 
Value2 = int(input("Type a number between 11 and 20: ")) 
cursor.execute("UPDATE test SET id='abcd' WHERE name=Value2") 

其实我试图找出如何让我从我的键盘键入更新和删除MySQL的代码,并使用该值作为名称的数据库更改名称字段的行。因为它现在是它给了我第二和第四行的SQL语法错误。你能告诉我我该如何解决这个问题?

我已经有同样的问题插入一个值,但问题已经解决了一些人的帮助从计算器。这里是插入的解决方案,这很好用:

cursor.execute("INSERT INTO test VALUES ('Number', %s)", (Value,)) 
cursor.execute("""INSERT INTO test VALUES ('Number', {})""".format(Value) 
cursor.execute("""INSERT INTO test VALUES ('Number', %s)""" % Value) 

我也想知道如何调用%s。请帮忙。

回答

0

%s被称为绑定变量。删除可以完全相同:

cursor.execute("DELETE FROM test WHERE name=%s", (Value,)); 
+0

你需要用''''围绕'%s',当我开始在python中执行SQL时,我遇到了同样的问题^^ – Matthew

+0

也许最好使用下面的代码:http://stackoverflow.com/questions/18231657/python -sqlite3-force-to-bind-a-parameter-as-string 有?被用作绑定变量,并且不需要“' –

0

%s是字符串替换。它的工作原理类似print "hi %s, my name is %s" % ("Loudas", "Matthew")

至于你的mysql代码,语法有点不合适。它应该是:

Value = int(input("Type a number between 1 and 10: ")) 
cursor.execute("DELETE %s FROM test WHERE name='%s'" % Value) 
Value2 = int(input("Type a number between 11 and 20: ")) 
cursor.execute("UPDATE test SET id='abcd' WHERE name='%s'" %s Value2) 

您需要使用ValueValue2作为变量(而不是字符串),以及环绕%s''

来源:这一非常东西合作