cursor.execute将分隔符添加到我的sql查询中

时间:2014-01-17 19:22:25

标签: python sql python-2.7 mysql-python

我正在努力解决这个问题:

addXml = '<bar><foo>thingy</foo></bar>' 

sql = 'INSERT INTO table(col1,col2) VALUES(%s,%s);'                 

try:
  cursor = cnx.cursor()
  cursor.execute(sql, ('some_text', addXml))
  cursor.close()
except Exception, e:
  print cursor._last_executed
  print e

在我的每个SQL请求中,出现此错误:

(1241, 'Operand should contain 1 column(s)')

我发现cursor.execute修改了我的sql请求:

INSERT INTO table(col1,col2) VALUES('some_text',("'<bar><foo>thingy</foo></bar>'"));

而不是

INSERT INTO table(col1,col2) VALUES('some_text','<bar><foo>thingy</foo></bar>');

我相信cursor.execute正在添加分隔符(“”)。

我该如何删除此行为?或者我该怎么办呢?

python version : 2.7.3 (default, Jan  2 2013, 13:56:14) [GCC 4.7.2]

由于

1 个答案:

答案 0 :(得分:0)

您的代码可以正常运行我的测试,我唯一能想到的是,根据您提供的代码是对保留名称的引用。你的表名实际上叫做表吗?我假设您为了示例而做了这个,但如果这是真正的代码,您可能需要考虑为您的表使用不同的名称。以下是我执行的测试中的相应代码行:sql ='INSERT INTO a(col1,col2)VALUES(%s,%s)'

addXml = "<c><b>thingy</b></c>" 
sql = 'INSERT INTO a(col1,col2) VALUES(%s,%s)'   
try:
    cursor=db.cursor()
    cursor.execute(sql , ('some_text', addXml))
    cursor.close()
except Exception, e:
    print cursor._last_executed
    print e

无怨无悔地工作。希望这会有所帮助。