我在这段代码中的第二个sql有一个sql查询错误:我知道它逃脱单个'的问题。引用但我不知道如何在我的参数内...这是我的第一个问题
我的第二个问题是关于另一种引用:`,我不知道为什么我需要它来围绕字段和表名,而我在SO上看到所有sql查询都没有&#39不需要它。有关信息,我使用easydevserver在localhost上使用mysql服务器。
提前感谢您的提示!
db = Database()
ea = Ean()
sql = 'SELECT * FROM `table 2` WHERE `categorie` = "Lego"'
listeproduit = db.select(sql)
for record in listeproduit:
skuref = "Mg "+ record[0][0:20]
print (skuref)
ean = ea.generateEAN13CheckDigit()
lastpost = record[0]
lastean = ean
print(lastpost)
print (lastean
sql = """UPDATE `table 2` SET `ean`='%s' WHERE `nom`='%s'"""%(lastean,lastpost)
print (sql)
db.insert(sql)
以下是我发布时的输出:
Lego Lego 79116 Tortues Ninja : L'évasion en camion
3700775101267
UPDATE `table 2` SET `ean`='3700775101267' WHERE `nom`='Lego Lego 79116 Tortues Ninja : L'évasion en camion'
pymysql.err.ProgrammingError: (1064, "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 'évasion en camion'' at line 1")
如果您需要更多我的代码,我会使用类似这样的类:
class Database(object):
def __init__(self):
self.db = pymysql.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="", # your password
db="mgdeal", # name of the data base
charset='utf8',
use_unicode=True,
init_command='SET NAMES UTF8')
def insert (self, sql):
cursor= self.db.cursor()
cursor.execute(sql)
newID = cursor.lastrowid
self.db.commit()
cursor.close()
return newID
答案 0 :(得分:0)
您可以使用以下内容转义引号:str(lastpost).replace("'","\\'")
它会告诉mysql它是引用是文本的一部分。