zoukankan      html  css  js  c++  java
  • mysqlclicent批量更新或创建数据(mysql)

    背景:

      在开发过程中肯定会遇到一堆数据需要向数据库存储,但是写入前需要验证是否主键重复或联合唯一值是否存在,如果存在则,更新,否则创建的写入要求条件。如果采用sql先查询,再写入或更新的操作比较麻烦,所以我们采用mysql自带的“

    on duplicate key update”方法实现。同时,由于是批量存入数据,为了提高我们采用mysqldb的“executemany”方式提交。

    on duplicate key update:

      在此,我们先看下这个sql语句:

    insert into commodity_base (i_id, supplier_id, supplier_name, ) values(%s,%s,%s) on duplicate key update supplier_id=values(supplier_id), supplier_name=values(supplier_name)"

      在执行这个sql语句时,会自动判断插入的数据的主键重复或联合唯一值是否存在,如果存在,则会更新“on duplicate key update”后面指定的字段。

    mysqlclicent:

      

    import MySQLdb
    def create_commodity(sql,datas_list):
      # 连接mysql数据库 conn
    = MySQLdb.connect( host='127.0.0.1', port=3306, user='root', passwd='root', db='test_database',
         # 设置编码类型,否则存储中文会报错 charset
    ='utf8' ) cur = conn.cursor() # 打印影响的行数,如果没有发生任何变更,则返回0 print(cur.executemany(sql, datas_list)) cur.close() conn.commit() conn.close() if __name__ == '__main__': datas_list = [(1, '531296', 'txt1',),(1, '53', 'txt2',)]
      sql = "
    insert into commodity_base (i_id, supplier_id, supplier_name, ) values(%s,%s,%s) on duplicate key update supplier_id=values(supplier_id), supplier_name=values(supplier_name)"
      create_commodity(sql, datas_list)
      
    print("执行完成")

      数据表设置i_id为主键,最终,supplier_id=53, supplier_name="txt2"。

  • 相关阅读:
    [Silverlight] Mac OS 风格按钮 Style 实现的更新版(针对 Silverlight 2 RTW)
    神奇的事情一再发生
    加快打开XAML文件的速度
    判断句子是不是魔法咒语的算法
    Silverlight 的控件生命周期
    斐波纳契数列非递归算法
    Silverlight 调用 WCF 如何处理错误
    Silverlight 2 终于来了!
    几个 ASP.NET 小技巧
    IronPython for ASP.NET 的支持更新了
  • 原文地址:https://www.cnblogs.com/xshan/p/12841973.html
Copyright © 2011-2022 走看看