可以在Python脚本中生成和执行Python代码吗?[动态Python代码]

2024-05-17 07:35:10 发布

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

我正在处理一些报告(计数),我必须获取不同参数的计数。很简单但是很乏味。在

一个参数的示例查询:

qCountsEmployee = (
    "select count(*) from %s where EmployeeName is not null"
     % (tablename)
     )
CountsEmployee = execute_query(qCountsEmployee)

现在我有几百个这样的参数!在

我所做的是:创建一个所有参数的列表,并使用一个快速的Python脚本生成它们,然后复制该文本并将其放入主脚本中,以避免冗长的行。在

^{pr2}$

当这种方法起作用时,我想知道是否可以不使用单独的脚本来生成代码行并将粘贴复制到主程序中,我是否可以在主脚本中直接生成它们,并让脚本将它们视为代码行?我认为这将使代码更具可读性。希望我说得通!谢谢您。。。在


Tags: 代码from脚本示例参数is报告count
3条回答

为了构建glglglgll所说的,使用动态SQL可能比使用动态Python更好(尽管动态Python肯定可以使用eval)之类的东西。在使用动态SQL时,应该小心SQL注入。但似乎很多开发者都不太喜欢它。在

我碰巧写了一篇关于SQL Injection and Python的文章,可以在Simple-talk上找到。在

这是可能的,但在这里没有用。在

做点像

columnList = ['a', 'b', ............'zzzz']

results = {}
for column in columnList:
    query = (
            "select count(*) from " + tablename
            + " where " + column + " is not null"
            )
    result = execute_query(qCountsEmployee)
    results[column] = result

你也可以把所有这些放在一个生成器函数中

^{pr2}$

您可以:

cmd = compile( 'a = 5', '<string>', 'exec' )
exec( cmd )

这和写的一样:

^{pr2}$

作为编译的第一个参数传递的字符串可以动态生成。在

相关问题 更多 >