Python2.x和MySQLDB5:如何忽略字符串中的所有字符

Python2.x和MySQLDB5:如何忽略字符串中的所有字符,python,quotes,mysql-python,Python,Quotes,Mysql Python,我目前正在编写一个python脚本,该脚本从databaseA上的表中提取数据,并将所有数据放入databaseB,databaseB不在databaseA附近。调用数据库插入时,我从mysqldb模块1064得到一个错误: 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第1行“1”>®;”、“somewords”、“somewords”、“somemore words”、“00000XXXXX\”附近使用的正确语法。 我不确定它是来自包含无转义引号的字符串,还是

我目前正在编写一个python脚本,该脚本从databaseA上的表中提取数据,并将所有数据放入databaseB,databaseB不在databaseA附近。调用数据库插入时,我从mysqldb模块1064得到一个错误:

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第1行“1”>®;”、“somewords”、“somewords”、“somemore words”、“00000XXXXX\”附近使用的正确语法。

我不确定它是来自包含无转义引号的字符串,还是来自html字符

有没有办法让python在执行sql插入时完全忽略字符串的内容

我尝试了围绕sql命令的
'
'
,当一种情况修复了一个问题时,随后它在行中运行到另一种类型的引号中,并以同样的方式出错

这两个数据库使用utf8是相同的,我模仿了databaseA,下面是sql命令sql2=

'''insert into %s (orders_id, customers_id, customers_name, customers_company, customers_street_address, customers_suburb, customers_city, customers_postcode, customers_state, customers_country,
 customers_telephone, customers_email_address, customers_address_format_id, delivery_name, delivery_company, delivery_street_address, delivery_suburb, delivery_city, delivery_postcode, delivery_state,
 delivery_country, delivery_address_format_id, billing_name, billing_company, billing_street_address, billing_suburb, billing_city, billing_postcode, billing_state, billing_country, billing_address_format_id,
 payment_method, payment_module_code, shipping_method, shipping_module_code, coupon_code, cc_type, cc_owner, cc_number, cc_expires, cc_cvv, last_modified, date_purchased, orders_status, orders_date_finished,
 currency, currency_value, order_total, order_tax, paypal_ipn_id, ip_address) Values ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s",
 "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s","%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")''' %
(bush, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43,
 r44, r45, r46, r47, r48, r49, r50, r51)
bush是一个原始输入,询问表名。

对于插入值,只需执行(%s,%s等),而不是(“%s”、“%s”等)

但是,您需要使用字符串格式来获取SQL中的表名

下面是一个示例,其中有2列,而不是40列:

sql2 = "insert into" + bush + "(orders_id, customers_id) Values (%s, %s)"
cursor.execute(sql2, (r1, r2))

<> >所有的<代码>(R1,R2,等),R39,R40)看起来非常乏味…我建议您考虑将SELECT的结果放入一个名为“代码> R< /代码>的序列中,然后使用第二行,使用<代码>光标。

你能发布你的insert语句吗?这两个数据库的字符编码是否不同?(即,一个是UTF-8,另一个是拉丁语?)这是因为你不正确地执行了查询。你可能是在使用字符串格式而不是使用参数替换生成insert语句。向我们展示光标。execute()您正在进行的调用,如果前面编写了第一个参数,请向我们展示这段代码。告诉我:游标没有“选择”属性。但是,使用“在选择位置执行”,并执行您建议我执行的所有其他操作都有效。非常感谢。@helmet648:是的,“选择”“他是个笨蛋;我编辑了答案来解决这个问题。请考虑接受我的答案(点击答案旁边的大“嘀嗒”)。