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

标签 python mysql global-variables

<分区>

我试图找出 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. 

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

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

SyntaxError: name 'TransactionNumber' is assigned to before global declaration

我愿意听取其他建议,以提高此流程的效率/简化流程。但我唯一的要求是当前正在读取数据库的脚本不得更改。它继续读取和分配数据库变量是一项基本要求。我不会用细节让您厌烦,但是该脚本对于检查我们从数据库接收的数据并确保它的格式正确以供使用至关重要,因为我们将从另一台计算机接收数据。

最佳答案

消息中包含您的答案。只需将 global 语句移到第一次使用任何变量的上方。

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

Juanpa Arrivillaga 提出了很好的观点。要跨模块边界共享,您需要使用模块名称来准确指定它们在哪个模块中定义。global 语句实际上仅有助于在单个模块中的函数和初始化代码之间共享名称。

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

此时,我真的建议查看字典或某种类型的自定义类或namedtuple 对象。你可以用全局变量来解决这个问题,但它最终看起来就像一条两条腿走路的狗。这令人印象深刻,不是因为这条狗做得很好,而是因为这条狗完全做到了。

我会使用对象、字典或 named tuple保留这些字段,以便整个困惑可以作为参数传递给函数。全局变量变得困惑,尤其是在频繁更新的代码中。这摆脱了所有那些 global 声明。对象的类类型或命名元组的字段列表成为整个模块可以看到的单点定义。

关于python - 设置数据库变量为全局变量 : Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198019/

相关文章:

java - 在哪里存储全局变量,如java中的文件路径?

python - 在函数中使用变量

python - 将物理地址转换为地理位置纬度和经度

PHP/MySQL 向表中插入多行

java - Android Studio : Java- making a global variable

javascript - 在另一个 (Three.js) Javascript 中使用一个函数的变量

python - 不使用最小值和最大值获取范围内值的更多 pythonic 替代方案

python - Django 自然键,两个值的组合?

mysql - 创建 "suggested artist to follow"查询

java - 无法将 Java 程序链接到 SQL 数据库