【python】pymysql動態sql技巧

背景

在python利用pymysql執行sql語句時,由於沒用的orm模型,只能手寫sql,這麼做有亮點不方便:

  • 1、參數個數變化時,sql語句就要有很大的調整,很不方便。
  • 2、在爬蟲中,我們插入的往往是一個對象,把對象解析出來再拼接sql語句很麻煩。

今天我們來學習一種動態sql的寫法,也可以說是通用型sql的寫法,當然這個寫法是我在看崔慶才大神的博客中學到的,參考鏈接:

https://cuiqingcai.com/5578.html

特別感謝!

實例

insert

在執行插入語句時,我們可以動態解析要插入的對象,解析出來的字段名、字段數和字段值之後就可以動態構造一個sql。

data = {
    'id': '20120001',
    'name': 'Bob',
    'age': 20
}
table = 'students'
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data))
sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
cur.execute(sql, tuple(data.values()))

update

data = {
    'id': '20120001',
    'name': 'Bob',
    'age': 21
}
 
table = 'students'
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data))
 
sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys, values=values)
update = ','.join([" {key} = %s".format(key=key) for key in data])
sql += update
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章