我必须通过python从mysql中删除一些日期。 我有超过2000的表。所以,我需要完成这个代码......我点击鼠标无法处理这么多。我真的需要帮助。
好吧,我的猜测是这样的sql ="delete from finance.%s where date='2000-01-10'"
def Del():
for i in range(0,len(data_s)):
curs.execute(sql,(data_s[i]))
conn.commit()
然而,它不起作用。
我只是 当我这样输入时,它可以工作。
>>> query="delete from a000020 where date ='2000-01-25'"
>>> curs.execute(query) //curs=conn.cursor()
但是如果我在语法中添加%s,它就不起作用..
>>> table='a000050'
>>> query="delete from %s where date ='2000-01-25'"
>>> curs.execute(query,table)
ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a000050' where date ='2000-01-25'' at line 1")
它也不起作用。
>>> curs.execute(query,(table))
ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''a000050' where date ='2000-01-25'' at line 1")
有点不同......但是相同。
>>> curs.execute(query,(table,))
我从这里读过很多问题,但只是添加()或者,它没有修复...... 因为我是python和mysql的初学者,所以我真的需要你的帮助。谢谢你的阅读。
答案 0 :(得分:0)
我遇到了同样的问题,我修正了:
def Del():
for i in range(0,len(data_s)):
x = "delete from finance." + data_s[i] + "where date='2000-01-10'"
print x # to check the sql statement :)
curs.execute(x)
conn.commit()
答案 1 :(得分:0)
好问题,请看MySQLdb User's Guide
<强> paramstyle 强>
字符串常量,指出参数标记格式的类型 预期的界面。设置为&#39;格式&#39; = ANSI C printf格式 代码,例如&#39; ... WHERE name =%s&#39;。如果使用映射对象 conn.execute(),然后界面实际使用&#39; pyformat&#39; = Python 扩展格式代码,例如&#39; ... WHERE name =%(name)s&#39;。但是,API 目前不允许指定多种风格 paramstyle。
请注意,传递给execute()的查询字符串中的任何文字百分号都必须进行转义,即%%。
参数占位符只能用于插入列值。他们 不能用于SQL的其他部分,例如表名, 陈述等。
希望这有帮助。