将数据库变量设置为全局变量:Python

2024-10-02 02:24:59 发布

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

我试图在python中找出全局变量,虽然有很多论坛帖子和示例,但没有一个真正符合我的需要。问题是:我使用MySQL数据库来接收11个不同的变量。这些变量用于控制目的,例如在特定的时间和日期打开和关闭阀门。我需要这些变量是全局的,它们必须能够在许多其他文件中使用。目前,这些变量只存在于读取数据库并为变量赋值的文件中。在

我的问题是:

当我从数据库中导入变量时,我是否可以简单地将它们指定为该脚本中的全局变量?像这样:

cursor.execute ("select variable1,variable2,....variableN from transaction where TransactionNumber=(select MAX(TransactionNumber) from transaction)")

readfromdb= cursor.fetchone() 

variable1,variable2,.....variableN=list(readfromdb)

global variable1,variable2...variableN. 

然后将这个文件导入我正在使用的其他文件中?在

我尝试过使用此方法,但收到以下错误:

^{pr2}$

我愿意接受其他建议,以使这一过程更有效/更精简。但我唯一的要求是当前正在读取数据库的脚本不能更改。它的基本要求是继续读取和分配数据库变量。我不想告诉你细节,但是这个脚本对于检查我们从数据库接收到的数据并确保它的格式正确以便使用是至关重要的,因为我们将从另一台计算机接收数据。在


Tags: 文件from脚本数据库select论坛cursor帖子
1条回答
网友
1楼 · 发布于 2024-10-02 02:24:59

留言里有你的答案。只需将global语句移到第一次使用任何变量的上方。在

您必须在需要为这些名称分配新值的任何函数的顶部重复这些global声明。在

Juanpa Arrivillaga说得很好。要跨模块边界共享,您需要使用模块名来精确指定它们在哪个模块中定义。global语句实际上只帮助在单个模块中的函数和初始化代码之间共享名称。在

如果“source1.py”创建了一个模块级(“global”)变量或函数name1,并且您想在“source2.py”中使用它,则必须在source2.py文件中import source1,然后将该变量/函数称为“source1.name1”。在

在这一点上,我建议您查看字典或某种类型的自定义类或namedtuple对象。你可以用globals来解决这个问题,但它最终看起来就像一只两腿走路的狗。这让人印象深刻,不是因为狗做得好,而是因为狗做得很好。在

我将使用对象、字典或named tuple来保存这些字段,这样整个混乱就可以作为参数传递给函数。全局变量变得混乱,特别是在频繁更新的代码中。这将删除所有这些global语句。对象的类类型或命名元组的字段列表成为整个模块都可以看到的单个定义点。在

相关问题 更多 >

    热门问题