从数据库执行python代码时出现语法错误

2024-10-03 02:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从一个数据库加载一些python代码(它在动态映射值,我可以在运行时更改这些值,而无需重新部署代码)。在

在我的代码中,我这样做是为了执行数据库代码:

if lMapping:
  print lMapping
  exec lMapping
  lValue = mapping(lValue, lCsvRow)

下面是lMapping的价值:

^{pr2}$

每当我这样做时,exec行上都会出现语法错误,我不明白为什么:

(<type 'exceptions.SyntaxError'>:invalid syntax (<string>, line 1)

更新

如果我先将数据库中的代码写入一个文件,它就起作用了:

print lMapping
lFile = open('/mapping.py','w')
lFile.write(lMapping)
lFile.close()
lReadFile = open('/mapping.py')
exec lReadFile
lValue = mapping(lValue, lCsvRow)

Tags: 代码py数据库if动态openmappingexec
1条回答
网友
1楼 · 发布于 2024-10-03 02:46:59

您是否使用BLOB或其他二进制类型列来存储代码?否则,数据库可能会更改行尾,exec将以SyntaxError分隔:

>>> s='''\
... print 'ok'
... '''
>>> s
"print 'ok'\n"
>>> exec s
ok
>>> exec s.replace('\n', '\r\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    print 'ok'
              ^
SyntaxError: invalid syntax

更新:在Windows上以文本模式写入文件会将行尾更改为平台本机行尾。另一种标准化方法是:

^{pr2}$

相关问题 更多 >