python insert动态sql

python insert动态sql

同事已经封装好的持久化工具,无法正却处理value为None时的插入,所以只能自己拼接出原生sql,记录如下
value正常拼接后,后续可根据需求,动态传入table_name,columns等字段

# -*- coding:utf-8 -*-

base_sql = """INSERT INTO table_name
( ip, user_name, pass_word, organize_name, organize_code, update_time, is_enable)
VALUES {values};
"""

def sing(base_sql, params):
    params = tuple(['null' if param is None else param for param in params])

    format = ",".join(["'%s'"] * len(params))
    format = "({})".format(format % params)

    base_sql = base_sql.format(values=format)
    return base_sql

def multi(base_sql,datas):
    multiParams =[]
    for params in datas:
        params = tuple(['null' if param is None else param for param in params])
        format = ",".join(["'%s'"] * len(params))

        format = "({})".format(format % params)
        multiParams.append(format)
    return base_sql.format(values = ",".join(multiParams))

if __name__ == '__main__':
    import sys

    reload(sys)
    sys.setdefaultencoding('utf-8')
    params = [
        ['127.0.0.1', 'admin', 'ct@123', 'ct', None, 1595670950, True],
        ['127.0.0.1', 'admin', 'ct@123', u'中文', None, 1595670950, True]
    ]
    base_sql = multi(base_sql, params)
    print base_sql

    print sing(base_sql, ['127.0.0.1', 'admin', 'ct@123', 'ct', None, 1595670950, True])

处理结果

'127.0.0.1','admin','ct@123','ct','null','1595670950','True'
'127.0.0.1','admin','ct@123','中文','null','1595670950','True'
INSERT INTO table_name
( ip, user_name, pass_word, organize_name, organize_code, update_time, is_enable)
VALUES ('127.0.0.1','admin','ct@123','ct','null','1595670950','True'),('127.0.0.1','admin','ct@123','中文','null','1595670950','True');

INSERT INTO table_name
( ip, user_name, pass_word, organize_name, organize_code, update_time, is_enable)
VALUES ('127.0.0.1','admin','ct@123','ct','null','1595670950','True'),('127.0.0.1','admin','ct@123','中文','null','1595670950','True');

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的insert函数用于将一个元素添加到列表的指定位置中。其用法如下: ```python list.insert(index, new_item) ``` 其中,index表示新元素应该插入的位置,new_item表示要添加的新元素。例如: ```python fruits = ['苹果', '西瓜', '水蜜桃'] fruits.insert(1, '水晶梨') print(fruits) ``` 输出结果为: ```python ['苹果', '水晶梨', '西瓜', '水蜜桃'] ``` 与append函数相比,insert函数可以将元素添加到任意位置,而不仅仅是列表的结尾。如果传入的位置在列表中不存在,新元素将被添加到列表的结尾。字符串、元组和列表的位置都是从0开始计算的。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Python列表的insert函数](https://blog.csdn.net/m0_48978908/article/details/119298106)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [python insert动态sql](https://blog.csdn.net/qq_33529102/article/details/107617177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值