首页 > 数据库 >postgresql在插入数据后怎么获取自增id

postgresql在插入数据后怎么获取自增id

时间:2023-09-03 16:33:59浏览次数:36  
标签:自增 postgresql 示例 ID Cursor 插入 id

要获取数据库自动分配的ID(通常是主键),可以使用数据库连接对象(在这里是 Connection)的相应方法来获取插入的最后一个自增ID。

不同的数据库管理系统有不同的方法来实现这一点。以下是两个常见的数据库管理系统的示例:

对于 PostgreSQL

如果你使用的是 PostgreSQL 数据库,可以使用 RETURNING 子句来返回插入的行的信息,包括自动生成的ID。以下是一个示例:

sqlStr = """
    INSERT INTO charts (name, file_name, scale,)
    VALUES (%(name)s, %(fileName)s, %(scale)s)
    RETURNING id;
"""
Cursor.execute(sqlStr, chartsInfo)
inserted_id = Cursor.fetchone()[0]  # 获取自增ID
Connection.commit()
print('插入成功!新记录的ID为:', inserted_id)

这个示例中,我们在 SQL 查询中使用 RETURNING id; 来返回插入的新记录的ID,然后使用 self._Cursor.fetchone()[0] 获取这个ID。

对于 MySQL

如果使用的是 MySQL 数据库,可以使用 LAST_INSERT_ID() 函数来获取最后插入的自增ID。以下是一个示例:

sqlStr = """
    INSERT INTO charts (name, file_name, scale)
    VALUES (%(name)s, %(fileName)s, %(scale)s);
"""
Cursor.execute(sqlStr, chartsInfo)
Connection.commit()
inserted_id = Cursor.lastrowid  # 获取自增ID
print('插入成功!新记录的ID为:', inserted_id)

在这个示例中,我们插入了数据,然后使用 Cursor.lastrowid 获取最后插入的自增ID。

具体的方法取决于所使用的数据库管理系统,因此请根据数据库类型选择适当的方法。

在这两个示例中,演示了如何在 PostgreSQL 和 MySQL 中获取自增ID。

标签:自增,postgresql,示例,ID,Cursor,插入,id
From: https://www.cnblogs.com/echohye/p/17675140.html

相关文章

  • 【ceph运维】解决mon is allowing insecure global_id reclaim问题
    解决monisallowinginsecureglobal_idreclaim问题1.查询ceph状态:$ceph-scluster:id:37ac4cbb-a2c6-4f81-af1e-e9e39c010c85health:HEALTH_WARNmonisallowinginsecureglobal_idreclaimservices:mon:1daemons,quorumcep......
  • C语言自增++放前面还是后面?
    《STL标准程序》里边一直提到前置比后置效率更高。关于此的一点个人理解记录下来。a++:加的过程中要先产生一个临时变量temp,加1之后的值赋给temp,然后你可以使用a(在if、for、while..中),最后再把temp的值assign给a。++a:这个就是直接在a上加1了,然后改怎么用,就怎么用。归根结底:二者的......
  • 7-4 ALV 报表之 ALV GRID(OOALV)
     「ZPGM_ALV_GRID_DEMO」常用:「CL_GUI_ALV_GRID」でALVを新規作成;灵活性强,ALV实现报表方式上最为灵活; 実装の基本的な流れ:ステップ1:(オブジェクト)定義DATA:GRIDTYPEREFTOCL_GUI_ALV_GRID,G_CUSTOM_CONTAINERTYPEREFTOCL_GUI_CUSTOM_CONTAINER. ステッ......
  • idea启动项目报错Error:(5, 52) java: 程序包org.springframework.beans.factory.anno
    idea启动项目报错Error:(5,52)java:程序包org.springframework.beans.factory.annotation不存在IDEA启动项目报错ERROR:(5,52)JAVA:程序包ORG.SPRINGFRAMEWORK.BEANS.FACTORY.ANNOTATION不存在去IDEA下查找maven选项:如果还不行,则继续选择下面的runner,勾选deleteIDEbuild......
  • idea配置默认javadoc类、接口注释,自动生成文档
    idea配置类#if(${PACKAGE_NAME}&&${PACKAGE_NAME}!="")package${PACKAGE_NAME};#end#parse("FileHeader.java")/***总体描述*<p>创建时间:${DATE}${TIME}</p>*@authorzhaoXin*@sincev1.0*/publicclass${NAME}{}接......
  • CF1848B Vika and the Bridge 题解
    CF1848BVikaandtheBridge题解题目大意给个题目传送门吧,感觉题意已经很清楚了题目传送门分析(我不会告诉你我第一眼看过去是二分)因为我们只能改一块木板的颜色,所以可以考虑贪心。大概算了下复杂度,也没有问题。题解我们要去求每种颜色最大距离的最小值,那我们可以先去求......
  • Android 系统抓包喂饭教程
    前言在编写爬虫前,我们都需要对目标应用进行抓包,然后分析一波后,才能进入到编写脚本的阶段对于使用iPhone的小伙伴来说,日常抓包不要太容易。PC端工具,比如:Charles、Fiddler完全够打;「Stream」是iOS端一款非常强大的网络抓包应用,界面简洁的同时功能非常强大但对于使用Android......
  • Git使用教程4—git在IDE上的使用
    前3节我们讲了git的本地仓库、远程仓库的操作,还有不同分支的合并,冲突的解决等知识。今天讲解git在IDE中的使用。本节只介绍Git在IDEA中的基本使用。(0)IDEA配置Git在设置直接配置即可。 应用场景分析一个team开发一个软件,team的组长为项目建立本地仓库和远程仓库。(1)定义远......
  • 纯分享:将MySql的建表DDL转为PostgreSql的DDL
    背景现在信创是搞得如火如荼,在这个浪潮下,数据库也是从之前熟悉的Mysql换到了某国产数据库。该数据库我倒是想吐槽吐槽,它是基于Postgre9.x的基础上改的,至于改了啥,我也没去详细了解,当初的数据库POC测试和后续的选型没太参与,但对于我一个开发人员的角度来说,它给我带来的不便主要是......
  • 向量搜索技术:基于Elasticsearch/PostgreSQL/Redis扩展的向量搜索数据库或独立向量搜索
    理论基础与研究向量数据库用于非结构化文本、图片、音频、视频搜索、推荐,将他们转换为数字向量表示来进行相似性(ANN)搜索。存储和搜索高维向量是其特征之一,通常采用高级索引技术和算法如HNSW,Annoy,或Faiss来实现。不同于SQL数据库,向量数据库更像nosql,用户接受使用sdk/API......