PostgreSQL存储的Python exec脚本执行无效果无报错问题咨询
问题原因
- 本地定义
script变量时使用的三层单引号'''是Python的多行字符串定界符,不属于实际要执行的脚本逻辑的一部分。但你将脚本存入PostgreSQL时,把这三层单引号也作为内容一并存储了,导致读取到的脚本首尾多了'''字符。 - 此时
exec()执行的是一个独立的多行字符串字面量,没有运行任何修改dff的逻辑,且单独的字符串表达式属于合法Python语法,因此不会触发报错,也就看不到第二列的修改效果。 - 你之前的验证存在误差:本地
script变量的实际内容不包含首尾的''',和从数据库读取到的带引号的内容并不一致。
解决方法
二选一即可:
- 修改数据库存储内容:删除PostgreSQL中脚本内容首尾的三层单引号,仅保留实际执行的逻辑代码:
b = dff.iloc[:,0] dff.iloc[:,1] += b.str[:2]
- 读取后清理无效字符:如果不方便修改数据库存储的内容,读取脚本后先清理首尾的空白和单引号再执行:
for param in paramdb: script = str(param[5]).strip().strip("'") exec(script) print(dff)
内容的提问来源于stack exchange,提问作者TMask
相关产品推荐
相关产品推荐

