使用python pymsql进行mysql查询时出错

时间:2016-02-12 10:56:03

标签: python mysql

我在这段代码中的第二个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

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容转义引号:str(lastpost).replace("'","\\'") 它会告诉mysql它是引用是文本的一部分。