python - 如何使用python在插入语句中转义单引号
问题描述
我正在尝试在 aws 胶水作业中使用 python 将数据插入红移表中。我的测试表中的某些列(从 csv 加载)有单引号(如 Carl's),当我运行脚本时,插入语句准备为 Insert into Details 值('1','Mark Jason','Carl's ', 'NY') 并且代码无法检测到额外的 s。
我尝试使用参数化语句,但无法获得正确的结果。请帮助我在哪里出错。
import pg8000
from datetime import datetime
conn = pg8000.connect(user = 'xxx', password = 'xx', host = 'xxx.redshift.amazonaws.com', port = 5000, database = 'xx')
cursor = conn.cursor()
currentDT = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
dest_table = "detail"
stg_table = "test"
dest_columns=['id','Name','Store','Location','Insert_time']
stg_columns = ['id','Name','Store','Location']
add_column=currentDT
dest_col_str = ""
for i in dest_columns:
dest_col_str += i+", "
dest_col_str = dest_col_str [:-2]
data = "select distinct * from "+stg_table
cursor.execute(data)
List = cursor.fetchall()
for i in range(len(List)):
e = List[i]
source_data = ""
for x in e:
if str(x) == '':
source_data += 'null'
elif type(x) == datetime or type(x) == str or type(x) == unicode:
source_data += "'"+str(x)+"'"
else:
source_data += str(x)
source_data+=','
query="INSERT INTO "+dest_table+"("+dest_col_str +" , "+add_column+") values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
data=source_data+add_column
cursor.execute(query,data)
cursor.execute("COMMIT;")
解决方案
在“s”之前使用反斜杠,如下所示。
('1','Mark Jason','Carl\'s', 'NY')
它会解决你的问题。
推荐阅读
- javascript - Need help in debugging a beginners javascript code
- node.js - TypeORM 无法创建名称中带有点的实体表
- javascript - 使 YouTube 嵌入(播放列表)加载更快
- azure-devops - 将 Azure DevOps 管道变量传递给 package.json 文件
- reactjs - 将路由重定向到“谢谢”组件后,我希望用户能够点击浏览器后退按钮返回主页
- amazon-ec2 - Neo4J 社区的用户和角色管理
- ios - 捆绑标识符构建错误 xamarin 形式 ios 和 ios 扩展项目
- java - 如何在 Spring Boot 1.4.3 中删除与 mysql 的非活动连接,多数据源
- php - 打印 HTML 生成的身份证
- jquery - jquery - 未定义函数 - 文档和 Windows 对象混淆