数据库insert操作时,某个字段是自增序列如ID,但是想获取这个ID的值是多少,后者把这ID的值作为后续其他sql的参数,那要怎么做呢,其实很简单,可用last_insert_id

要获取MySQL自增ID序列,可用通过last_insert_id

当执行insert的时候,先不要commit,通过SELECT LAST_INSERT_ID();获取到自增序列后,再commit,否则获取到的是0

# -*- coding: utf-8 -*-import xlrd
db_info = {'host':'', 'port':8899, 'user':'ducc', 'passwd':'', 'db':'', 'charset':'utf8'}#连接数据库
import pymysql
import sys
import traceback# 插入dcf_services
inser_dcf_services = "INSERT INTO `dcf_services` ( `PARENT_SERVICES_ID`, `SERVICES_NAME`, `SERVICES_CODE`, `SERVICES_TYPE`, `CONCURRENT_NUM`, `PACKAGE_ID`, `START_PARAM`, `PROGRAM_NAME`, `SERVICES_TYPE_ID`, `BUS_CLUSTER_ID`, `EXT_CLUSTER_ID`, `DEPENDENT_SERVICES_ID`, `NAMESPACE`, `START_SCRIPT`, `UPGRADE_TYPE`, `CLUSTER_ELE_RUN_JSTORM`, `WORKER_NUM`, `CROSS_HOST`, `DOWN_SERVICE`, `SOCKET_PROT`, `LATN_ID`) VALUES ( '0', %s, %s, '2', '1', '1', %s, %s, '1', 'F9257CBC99B84C9D84DDC2E6837736CD', 'FFE51021A941411A912B3EB47D3F992E', '-1', '', 'start_app.sh', '', '0', NULL, NULL, NULL, NULL, NULL);"
inser_dcf_host = "INSERT INTO `dcf_services_host_cfgfile` ( `SERVICES_ID`, `EXT_FIELD`, `SERVICE_TYPE`, `EXT_FIELD1`) VALUES ( %s, %s, '2', '1');"#获取excle数据11.xls
hostIds = []
def getfiledata(file):workbook = xlrd.open_workbook(filename=file) # filename是文件的路径名称table = workbook.sheets()[0] # 获取第一个sheet表格datas = []for r in range(1, table.nrows):  # nrows行,开始读每行的数据,cell获取每个单元格PROGRAM_NAME = table.cell(r, 0).value  # 用户昵称SERVICES_CODE = table.cell(r, 1).value  # 订单状态SERVICES_NAME = table.cell(r, 2).value  # 支付金额START_PARAM = table.cell(r, 3).value  # 购买数量HOST_ID = table.cell(r, 4).value  # 省份data = (SERVICES_NAME,SERVICES_CODE,START_PARAM,PROGRAM_NAME) #把每一行的数据添加为一个元组datas.append(data) #把每一组添加到列表print(datas)hostIds.append(HOST_ID)# print(hostIds)insert_id_infos = []
def inser_dcfServices(datas):try:bill_conn = pymysql.Connect(**db_info)cursor = bill_conn.cursor()for da in datas:print(da)cursor.execute(inser_dcf_services,da)cursor.execute("select last_insert_id();") #查询自增序列SERVICES_ID的值insert_id_info = cursor.fetchall()  #获取自增序列SERVICES_ID的值,获取 ID 必须在 commit 之前,否则获取为 0insert_id_infos.append(insert_id_info[0][0])# print(insert_id_infos)bill_conn.commit()bill_conn.close()except Exception():print(traceback.format_exc())if __name__ == '__main__':try:file = sys.argv[1]getfiledata(file)except:print('usage: python dcf_services.py [file]')print('example: python dcf_services.py dcf_task_program.xls')

python获取MySQL自增ID序列相关推荐

  1. 获取mysql 自增id 和mysql 下一个自增id的方法

    mysql获取表中自增id的方法: 1. 使用 select MAX(id) from tablename; 获取的是表中最大的id:顺序执行  insert ---> delete 插入的数据 ...

  2. php mysql获取新添加记录的id值_PHP获取MySql新增记录ID值的方法

    今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法 ...

  3. mybatis获取mysql自增主键_Mybatis获取数据库自增主键

    一般我们都为将表中主键列设置为自增,当我们执行插入语句时,比如这样 //测试添加 Employee employee = new Employee(null, "jerry4",n ...

  4. mysql自增id存在哪里_mysql返回自增id

    在mysql操作中执行insert,是没有自增id返回的,这就对于后续编写逻辑造成了很大不便. 其实有几种方法可以做到insert后直接获取到自增id. 1.执行select max(id); 原理是 ...

  5. 技术分享 | 关于 MySQL 自增 ID 的事儿

    作者:贲绍华 爱可生研发中心工程师,负责项目的需求与维护工作.其他身份:柯基铲屎官. 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 当我们使用 M ...

  6. mysql自增id原理_《MySQL自增ID》告诉你不为人知的“秘密”......

    原标题:<MySQL自增ID>告诉你不为人知的"秘密"...... 作者:Sunshine Koo 1.概述 " MySQL数据库是最常使用的数据库之一,我们 ...

  7. Mysql 自增id、uuid与雪花id

    概念介绍 三种主键 自增id :1 2 3 4 5-- uuid :UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生 ...

  8. 45 MySQL自增id

    45 MySQL自增id 表定义自增id 说到自增id,前面提到mysql的自增id不连续,当表定义的自增值达到上限后的逻辑是:再申请下一个id时,得到的值保持不变 create table t(id ...

  9. mysql自动增长id 溢出_MySQL表自增id溢出的故障复盘怎么解决 MySQL表自增id溢出的故障复盘解决方法...

    MySQL表自增id溢出的故障复盘如何解决?本篇文章小编给大家分享一下MySQL表自增id溢出的故障复盘解决方法,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 问题:MyS ...

最新文章

  1. std string与线程安全_详解linux系统中断线程的那些事
  2. python 模块与包
  3. 【转】 使用 AppFuse 快速构建 J2EE 应用
  4. ICML论文录取难度逐年上升,New In ML为你特设“名师辅导班”
  5. 将网站SSL Server Certificate导入ABAP系统,证书Subject中文字符被转义引起的问题
  6. 3-3:常见任务和主要工具之网络
  7. [Effective C++ --032]确定你的public继承塑模出is-a
  8. 数据结构基础学习(一)数组
  9. Ubuntu的 g++ gcc版本升降级
  10. redis增加auth
  11. 项目管理(二)责任划分
  12. 导航猫连接Oracle
  13. Beginning Python: chapter 1 Instant Hacking The Basics: Modules, cmath, turtle
  14. 金蝶KIS旗舰版7.03 KIS旗舰版7.01 金蝶KIS专业版16.04 KIS专业版16.01 KIS商贸版9.04 KIS商贸版9.01 金蝶K3 15.1 云星空Cloud7.6企业版标准版
  15. 算法图解(递归调用栈)
  16. 反编译so库破解so
  17. 包装exp是什么意思_药瓶说明中EXP是什么意思?
  18. 开源免费 低代码平台开源_行动透明:免费代码营现已开源
  19. 计算机建模与仿真心得,计算机建模与仿真.docx
  20. scanf函数解析,附带rewind函数(清空缓存)

热门文章

  1. fedora-MEPG
  2. VB中 On error 的用法
  3. [思维模式-14]:《复盘》-2- “知”篇 - 复盘之道
  4. 浏览器报错Not allowed to load local resource:的解决办法,与网上大多数都不同,亲测有用!
  5. 阿里 mysql默认的隔离级别_mysql的默认隔离级别
  6. Leetcode 763. Partition Labels
  7. Android 全局大喇叭——详解广播机制
  8. 三星对Android的支持,三星应对Android设备开放Gear手表兼容性
  9. uitraiso使用方式
  10. iOS 自定义进度条