You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQLObject Python类方法中获取数据库行ID(无需显式GET)

SQLObject中无需显式GET获取自动生成主键ID的方法

在SQLObject中,当你创建模型实例并插入数据库后,框架会自动将数据库生成的主键ID绑定到实例的id属性上,完全不需要额外的显式GET操作来获取这个值。

修正后的示例代码

from sqlobject import SQLObject, StringCol, ForeignKey, sqlhub, connectionForURI

# 初始化数据库连接
sqlhub.processConnection = connectionForURI('sqlite:/:memory:')

class Person(SQLObject):
    name = StringCol(length=50)
    
    def addAddress(self, street, city):
        # 直接通过self.id获取当前Person实例的主键ID
        Address(street=street, city=city, person_id=self.id)

class Address(SQLObject):
    street = StringCol(length=100)
    city = StringCol(length=50)
    person_id = ForeignKey('Person')

# 创建数据表
Person.createTable()
Address.createTable()

# 测试逻辑
p = Person(name="John Doe")
p.addAddress("Main St", "New York")

# 验证ID是否正确获取
print(f"Person ID: {p.id}")
print(f"关联的Address: {Address.selectBy(person_id=p.id)[0].street}")

关键说明

  • 当执行p = Person(name="John Doe")时,SQLObject在完成数据库插入操作后,会自动从数据库取回生成的主键值,并赋值给p.id属性。
  • 在类内部方法(比如addAddress)中,直接使用self.id就能访问当前实例的主键ID,无需调用任何查询方法。
  • 外键关联时,直接将self.id传入关联模型的外键字段即可完成关联,整个过程不需要额外的数据库查询。

内容的提问来源于stack exchange,提问作者Ghisbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:22:39