python拼接sql语句_【Python】拼接MySQL常用语句
import pymysql
class MK_sql ():
"""
構建mySQL常見語句:增刪改查排序
"""
def __init__(self, table_name):
self.table_name = table_name
def mk_create(self, value: list):
"""
構建mySQL創建表語句
@param value: 字段列表
@return:
"""
if not isinstance (value, list):
raise Exception ("TypeError")
sql = "create table %s (%s)" % (self.table_name, self.to_str (value))
return sql
def mk_delete(self, condition: dict):
"""
構建mySQL刪除指定字段語句
@param condition: 刪除條件,dict型
@return:
"""
if not isinstance (condition, dict):
raise Exception ("TypeError")
sql = "delete from %s" % self.table_name
sql += " where %s " % self.to_str_and (condition)
return sql
def mk_insert(self, value: list):
"""
構建mySQL插入字段語句
@param value: 需插入的整行數據
@return:
"""
if not isinstance (value, list):
raise Exception ("TypeError")
sql = "insert into %s values " % self.table_name
sql += str (value)
return sql
def mk_update(self, value: dict, condition: dict):
"""
構建mySQL更新字段語句
@param value: dict 要更新的字段
@param condition: dict SQL條件語句
@return:
"""
if not isinstance (value, dict) or not isinstance (condition, dict):
raise Exception ("TypeError")
sql = "update %s set " % self.table_name
sql += self.to_str (value)
sql += " where %s " % self.to_str_and (condition)
return sql
def mk_select(self, cols=None, limit=None, distinct=False):
"""
構建mySQL select查詢語句
@param cols: list型,要查詢的字段名稱
@param limit: int型
@param distinct: bool型,True:去重,只作用于非全部查詢
@return:
"""
if (cols != None and not isinstance (cols, list)) or \
(limit !=None and not isinstance (limit, int)) or not isinstance(distinct,bool):
raise Exception ("TypeError")
if not limit:
if not cols:
sql = "select * from %s" % self.table_name
else:
if not distinct:
sql = "select %s from %s" % (self.to_str (cols), self.table_name)
else:
sql = "select distinct %s from %s" % (self.to_str (cols), self.table_name)
return sql
else:
if not isinstance (limit, int):
raise Exception ("TypeError")
if not cols:
sql = "select * from %s limit %s" % (self.table_name, limit)
else:
if not distinct:
sql = "select %s from %s limit %s" % (self.to_str (cols), self.table_name, limit)
else:
sql = "select distinct %s from %s limit %s" % (self.to_str (cols), self.table_name, limit)
return sql
def mk_order_by(self, value: list, asc=True):
"""
構建mySQL排序語句
@param value: 單個字段或多個字段
@param asc: 默認為True升序,FALSE為降序
@return:
"""
if not isinstance (value, list) or not isinstance(asc,bool):
raise Exception ("TypeError")
if asc:
sql = "order by %s from %s" % (self.to_str (value), self.table_name)
else:
sql = "order by %s from %s desc" % (self.to_str (value), self.table_name)
return sql
def to_str_and(self, value: dict):
"""
內部函數,用于轉換mySQL帶and條件語句
@param value:dict型
@return: [key='value' and key='value' and...]
"""
info_list = ["%s='%s'" % (str (k), str (v)) for k, v in value.items ()]
return " and ".join (info_list)
def to_str(self, value):
"""
內部函數,轉換成SQL指定的str格式
@param value: list/dict
@return: 1、list參數不帶引號的str,2、dict參數返回[key='value', key='value'...]
"""
if isinstance (value, list):
cnt = ["%s" % value for value in value]
return ",".join ((cnt))
elif isinstance (value, dict):
cnt = ["%s='%s'" % (str (k), str (v)) for k, v in value.items ()]
return ",".join (cnt)
總結
以上是生活随笔為你收集整理的python拼接sql语句_【Python】拼接MySQL常用语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多元二次方程 python_Python
- 下一篇: python字符串数组中最短的_pyth