歡迎您光臨本站 註冊首頁

python mysql中in參數化說明

←手機掃碼閱讀     sl_ivan @ 2020-06-08 , reply:0

第一種:拼接字符串,可以解決問題,但是為了避免sql注入,不建議這樣寫

還是看看第二種:使用.format()函數,很多時候我都是使用這個函數來對sql參數化的

舉個例子:

select * from XX where id in (1,2,3)

參數化in裡面的值:

select * from XX where id in ({}).format('1,2,3')

你可以打印下看看,和你原來的sql是一模一樣的

補充知識:python與mysql交互/讀取本地配置文件/交互報錯

如果自己寫mysql連接要讀取本地配置文件,需要注意:

在配置文件config.ini中寫:

[sql]
 ip = xxx
 port = xxx
 table = xxx
 uname = xxx
 passwd = xxx

如:test.py文件

  # 首先導入  import pymysql  # 這是獲取配置文件的內容  host = conf.get('sql', 'ip')  port = conf.get('sql', 'port')  database = conf.get('sql', 'table'),  user = conf.get('sql', 'uname')  password = conf.get('sql', 'passwd')    # 建立mysql數據庫連接    conn = pymysql.connect(host=host, port=port, db=database, user=user, password=password, charset='utf8') # 這裡注意有可能報錯,後面會說  sql = 'xxx' # sql語句  cs1 = conn.cursor() # 創建執行對象  count = cs1.execute(sql) # 執行sql語句,返回值是數據庫中影響的行數,並賦值給count  conn.commit() # 提交數據庫的變更  cs1.close() # 關閉執行對象  conn.close() # 關閉數據庫連接對象

 

報錯:

can only concatenate tuple (not "bytes") to tuple

這是因為在配置文件讀進來的某個結果是個數組,打印看一下就知道了

但是在上篇python讀取配置文件中,試過第一個[global]中讀取的沒有出現數組形式,這個是為什麼我也不知道了,歡迎大家留言共同交流

[Errno 11004] getaddrinfo failed 和下面這個

django操作mysql時django.db.utils.OperationalError: (2003, "Can't connect to MySQL server")錯誤:

如果是在引用本地配置文件時報錯,這個報錯也很有可能是讀取配置文件時的問題

可以嘗試這樣解決:

1.自己本地用工具也好,命令也好嘗試連接一下,如果不行,那就可能是網絡或者權限問題

2.如果上面可以,直接寫一個獨立的python文件,不去讀取本地文件,將信息直接寫在py文件中,運行結果可以,就是配置文件讀取的問題

3.然後嘗試讀取,並打印讀取結果,就能發現問題了         


[sl_ivan ] python mysql中in參數化說明已經有259次圍觀

http://coctec.com/docs/python/shhow-post-237459.html