我如何用SELECT保持对象定义,它定义了更多的对象,并防止变量变成"任何"类型?这有可能吗?

我想出了这个:

DB = DatabaseModel() 

stmt = select(Item, Package).join(Package, Item.Package_id1 == Package.Package_id)
exec = DB.session.execute(stmt).all() # Sequence[Row[Tuple[Item, Package]]]

for row in exec:
    row #Row[Tuple[Item, Package]] 

    Item_object : Item = row[0]   
    Package_object : Package = row[1]  

这样,我只将一个值定义为对象,这样我就可以保留映射. 但有没有更好的(正确的)方法来做到这一点呢?而不需要创建新的变量?

推荐答案

所以,我能想出答案. 我无法解压缩它,因为这个命令:

exec = DB.session.execute(stmt).all() 
# Returned type: Sequence[Row[Tuple[Item, Package]]]

所以在for循环中,我不能像解包typeof(tuple)那样解包typeof(Row).

所以正确的解压缩值的方法是这样的:

DB = DatabaseModel() 

stmt = select(Item, Package).join(Package, Item.Package_id1 == Package.Package_id)
exec = DB.session.execute(stmt).tuples().all() # Sequence[Tuple[Item, Package]]]

for _item, _package in exec:
    .....

在EXECUTE语句中添加.touples()将删除Row个定义,并且只返回元组.

Python相关问答推荐

如何对行使用分段/部分.diff()或.pct_change()?

如何计算部分聚合数据的统计数据

除了Python之外,可以替代bare?

将列表中的元素替换为收件箱中的元素

从管道将Python应用程序部署到Azure Web应用程序,不包括需求包

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

如何使用scipy从频谱图中回归多个高斯峰?

@Property方法上的inspect.getmembers出现意外行为,引发异常

删除最后一个pip安装的包

发生异常:TclMessage命令名称无效.!listbox"

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

梯度下降:简化要素集的运行时间比原始要素集长

处理具有多个独立头的CSV文件

如何在BeautifulSoup/CSS Select 器中处理regex?

如何使用使用来自其他列的值的公式更新一个rabrame列?

OpenGL仅渲染第二个三角形,第一个三角形不可见

并行编程:同步进程

无法在Spyder上的Pandas中将本地CSV转换为数据帧

使用SeleniumBase保存和加载Cookie时出现问题