第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:Mysql Escape 函數(shù)生成損壞的查詢

Python:Mysql Escape 函數(shù)生成損壞的查詢

30秒到達戰(zhàn)場 2022-06-07 17:05:48
Python mysql 默認轉義函數(shù),損壞查詢。原始查詢字符串如下。它工作正常,并根據(jù)需要向數(shù)據(jù)庫添加記錄INSERT IGNORE INTO state (`name`, `search_query`, `business_status`, `business_type`, `name_type`, `link`) VALUES ("test_name1", "test", "test_status", "test_b_typ", "test_n_typ", "test_link"), ("test_name2", "test", "test_status", "test_b_typ", "test_n_typ", "test_link")但是在使用功能 safe_sql = self.conn.escape_string(original_sql) safe_sql 將其轉義以使 sql Injection 安全之后,正在生成如下b'INSERT IGNORE INTO state (`name`, `search_query`, `business_status`, `business_type`, `name_type`, `link`) VALUES (\\"test_name1\\", \\"test\\", \\"test_status\\", \\"test_b_typ\\", \\"test_n_typ\\", \\"test_link\\"), (\\"test_name2\\", \\"test\\", \\"test_status\\", \\"test_b_typ\\", \\"test_n_typ\\", \\"test_link\\")'現(xiàn)在,如果我嘗試執(zhí)行 safe_sql,我會收到以下語法錯誤MySQLdb._exceptions.ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'\\"test_name1\\", \\"test\\", \\"test_status\\", \\"test_b_typ\\", \\"test_n_typ\\", \\"tes\' at line 1')這讓我想知道,如果我使用的轉義功能損壞/不兼容,或者我沒有以正確的方式使用它?此外,我一次輸入數(shù)百條記錄,并且由于與運行數(shù)百次的準備好的語句相比,單個查詢的快速處理(我純粹假設),我正在創(chuàng)建一個大型查詢。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經(jīng)驗 獲得超7個贊

您無法逃避整個查詢!您不能通過隨機連接字符串來構建查詢,然后在其上揮動魔杖并使其“注入安全”。您需要先轉義每個單獨的值,然后再將其放入查詢中。例如:

"INSERT ... VALUES ('%s', ...)" % self.conn.escape_string(foo)

但實際上,您的 MySQL API 可能提供了準備好的語句,這些語句更易于使用且不易出錯。就像是:

self.conn.execute('INSERT ... VALUES (%s, %s, %s, ...)',
                  (foo, bar, baz))


查看完整回答
反對 回復 2022-06-07
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號