概要:Python3 中可以使用 PyMysql 来读写 MySQL 数据库,但是在拼装 sql 的时候,可能会因为字符串中的引号导致 sql 语法错误,通过 Hex 的方式可以完美解决该问题。
原始方式:因为 str_value 中的单引号,会导致拼装出来的 sql 出现语法错误
str_value = "12'3'456"
sql = "insert into test_table(str_value) values('%s')" % (str_value)
with conn.cursor() as cursor:
cursor.execute(sql)
conn.commit()
替换方案:把 str_value 转换为 hex 串后,再利用 MySQL 的 unhex() 函数来解码,可以完美解决引号问题
str_value = "12'3'456"
sql = "insert into test_table(str_value) values(unhex('%s'))" % (str_value.encode().hex())
with conn.cursor() as cursor:
cursor.execute(sql)
conn.commit()