[英]How to escape single quote in insert statements using python
我正在嘗試使用aws glue作業中的python將數據插入到redshift表中。 我的測試表中的一些列(由csv加載)有單引號(如Carl's),當我運行腳本時,insert語句准備為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')
它會解決你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.