如何在SQLAlchemy中关联类型格式不同但数据同源的两张表?
不同格式类型字段的表关联实现
针对你这种一个是int类型ID、另一个是带固定前缀的字符串ID的关联场景,只需对字符串字段做格式清洗+类型转换,再和int字段匹配即可,用SQLAlchemy的内置函数就能实现:
方法1:替换前缀后转int
如果columnB的前缀固定为'Agent:',可以用replace函数去掉前缀,再通过cast转成int类型,关联写法如下:
select(...) .select_from( table1.join( table2, table1.c.columnA == func.cast(func.replace(table2.c.columnB, 'Agent:', ''), Integer) ) )
方法2:截取数字部分后转int
如果前缀长度固定('Agent:'是6个字符),也可以直接从第7位开始截取字符串,再转int:
select(...) .select_from( table1.join( table2, table1.c.columnA == func.cast(func.substr(table2.c.columnB, 7), Integer) ) )
两种方法都能让原本格式不匹配的字段满足关联条件,根据你的数据库类型和实际场景选择即可。
内容的提问来源于stack exchange,提问作者Fealo
相关产品推荐
相关产品推荐

