Mysql 字符转义
在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。MySQL识别下面的转义序列:
\0 | ASCII 0(NUL)字符。 |
\' | 单引号(‘'’)。 |
\" | 双引号(‘"’)。 |
\b | 退格符。 |
\n | 换行符。 |
\r | 回车符。 |
\t | tab字符。 |
\Z | ASCII 26(控制(Ctrl)-Z)。该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name < file_name,ASCII 26会带来问题)。 |
\\ | 反斜线(‘\’)字符。 |
\% | ‘%’字符。参见表后面的注解。 |
\_ | ‘_’字符。参见表后面的注解。 |
这些序列对大小写敏感。例如,‘\b’解释为退格,但‘\B’解释为‘B’。
在python程序中,如果字符串中出现了特殊字符,就需要对其进行转义。
"""
将需要更新的description的信息生成sql语句 并写入文本文件
"""
import pymysql
import pandas as pd
df = pd.DataFrame(pd.read_excel("整理导入到系统的desc描述信息1129.xlsx"))
print(df.info())
for i in df.index:
product_id = df.loc[i,"product_id"]
desc = str(df.loc[i,"new_description"])
desc = desc.replace("\\","\\\\")
desc = desc.replace("\'","\\\'")
desc = desc.replace("\"","\\\"")
desc = desc.replace("\n\n","\\n")
desc = desc.replace("\r\n","\\n")
desc = desc.replace("\n","\\n")
desc = desc.replace("\t","\\t")
desc = "'"+desc+"'"
df.loc[i,"r_desc"] = desc
sql = 'update p_attribute set ga_desc =%s where product_id = %d;'%(desc,product_id)
df.loc[i,"sql_desc"] = sql
df.to_excel("晴雨挡延伸描述转义后sql语句1129.xlsx",index=False)
with open("晴雨挡延伸描述sql语句.txt","w",encoding="utf-8") as fp:
dfsql = df["sql_desc"]
for sql in dfsql:
fp.write(sql+"\n\n")