我正在努力解决这个问题:
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]
由于
答案 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
无怨无悔地工作。希望这会有所帮助。