注册

Python客户端sqlalchemy框架插入数据后获取到的自增id为0

微光 2023/10/30 658 0

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:kylin
【CPU】:arm
【问题描述】*:Pythom sqlalchemy框架通过orm的方式插入一条数据,然后orm对象上补充的自增id为0,请问是包有问题还是我的用法问题呢?或者有没有其他方式可以获取到插入数据的自增id?辛苦老师们帮忙看看

Python环境
python版本:3.7.0
dmPython:2.3
sqlalchemy-dm:1.1.10

表定义为:

CREATE TABLE IF NOT EXISTS mytable ( primary_id bigint PRIMARY KEY IDENTITY(1,1), uname varchar(64) NULL DEFAULT NULL );

Python脚本:

from utils import get_session from sqlalchemy import Table, MetaData, Column, INTEGER, VARCHAR from sqlalchemy.orm import mapper class Mytable: def __init__(self, primary_id=None, uname=None): self.primary_id = primary_id self.uname = uname mytable = Table( 'mytable', MetaData(), Column('primary_id', INTEGER, primary_key=True, autoincrement=True), Column('uname', VARCHAR(64), nullable=True), ) mapper(Mytable, mytable) session = get_session() po = Mytable(uname = "AAA") session.add(po) print(po.__dict__) # 输出为:{'_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0xfffe8b8f6690>, 'primary_id': None, 'uname': 'AAA'} session.flush() print('after flush', po.__dict__) # 输出为:after flush {'_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0xfffe8b8f6690>, 'primary_id': 0, 'uname': 'AAA'} session.commit() print('after commit', po.__dict__) # 输出为:after commit {'_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0xfffe8b8f6690>} session.close();
回答 0
暂无回答
扫一扫
联系客服