sqlalchemy 和 django 插入操作后自动返回自增ID

result = session.execute(‘insert into ***‘)

session.commit()

last_insert_id = result.lastrowid

注意:如果存在多个用户操作数据库,应保持每个用户或者每个请求线程拥有各自隔离的session

https://segmentfault.com/q/1010000004328560

def test_add(other):

u = TestClass()

u.Other = other

session = database.get_session()

try:

session.add(u)

session.commit()

return u.Id

except:

return false

finally:

session.close()

ui = UserInfo(userName=‘user‘+str(random.randint(1,10000)))

print ui.userId

ui.save()

print ui.userId

应该第二次调用ui.userId 会得到返回值,但是,却没有。

非常奇怪

解决办法:

将IntegerField 换成 AutoField

解决:http://stackoverflow.com/questions/7689553/empty-id-after-saving-model-to-database

https://blog.csdn.net/iteye_16613/article/details/82573956

原文地址:https://www.cnblogs.com/pythonClub/p/9886527.html

时间: 2024-10-16 01:29:17

sqlalchemy 和 django 插入操作后自动返回自增ID的相关文章

sqlserver插入数据后自动返回自增编号方法

以下是代码 比如这个表里面的id是主键,并且是自增的 insert into demo() output inserted.id  values('a','b'); 使用output inserted.(自增的编号的字段名) 这样就出来了.

mybatis插入操作时,返回自增主键id

mapper.xml 代码 <insert id="insert" parameterType="com.Student" > <selectKey keyProperty="id" resultType="long" order="AFTER"> select last_insert_id(); </selectKey> insert into student(id,,

mysql插入数据后返回自增ID的方法

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN

Postgresql插入数据返回自增id

Postgresql插入数据返回自增id 一.设置自增id 新建字段  并且将字段属性设置为serial 二.插入返回 insert语句增加return 例如:insert into point(pointtype,pointx,pointy,pointval)values(1,2,3,4) RETURNING id;

hibernate实现分表后获取insert自增ID方法。

#第一种基于原生的JDBC的方式实现 private Integer insert(POJO entity, String table) throws SQLException { String insertSQL = "INSERT INTO " + table + " (XXXX)VALUES(?,?,?,?,?,?,?,?)"; DataSource dataSource = SessionFactoryUtils.getDataSource(getHiber

mysql清空表数据后如何让自增ID仍从1开始

mysql清空表数据后如何让自增ID仍从1开始?也就是说如何重排auto_increment 清空表时使用truncate命令,而不用delete命令 mysql> truncate test; 使用truncate命令的好处: 1).速度快 2).可以对自增ID进行重排,使自增ID仍从1开始计算   原文地址:https://www.cnblogs.com/superboblogs/p/9445318.html

MyBatis Mapper insert操作返回自增Id

在insert标签中添加主键在实体类中的字段keyProperty="id" <insert id="add" useGeneratedKeys="true" keyColumn="id" keyProperty="id"> 这样在insert操作后,会将操作完成的新记录注入回传进来的对象中 原文地址:https://www.cnblogs.com/esrevinud/p/12291646.ht

在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式

设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中.MySQL和SQLServer执行auto-generated key field,因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取.但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了 <insert id="add" parameterType="Stud

插入数据返回自增id及插入更新二合一

原文https://blog.csdn.net/dumzp13/article/details/50984413 JDBC: con.setAutoCommit(false); String sql = "INSERT INTO VIN(vin) VALUES(?)"; PreparedStatement ps = con.prepareStatement(sql,new String[]{"id"}); //第二个参数是要获取的字段名数组 ps.setString