python - 强制python在不重新启动代码的情况下接受来自数据库的变量更改

标签 python mysql database variables properties

我正在使用以下代码从 Python 用来运行自动化机器的数据库中检索变量。我通过 PHP 驱动的 Web 界面设置变量。 Python 读取变量并根据指令执行操作。

但是,在机器校准期间,我们被迫重新启动 python 以接受任何变量更改。 Python 不是我的第一语言,也不是我同事的第一语言。如果我们不必重新启动 python 来接受变量更改,那显然会节省很多时间。

我们的变量列表类构造如下;

class VariableList():
connectdb = DbConnector(host='localhost', user='a', password='b', database='c')
result = connectdb.selectDb('variablelist','varA,varB')
for row in result:
    # INPUTS
    varA = row[1]
    varB = row[2] 

解决此问题的 Pythonic 方法是什么? setter/getter / setter/getter ? @属性(property)?一个遵循的例子将非常感激......

最佳答案

简单的。 Python 实现是这样的:


class VariableList():

    def __init__(self):
        self.db_con = DbConnector(host='localhost', user='a', password='b', database='c')

    @property
    def varA(self):
        return self.db_con.selectDb('variablelist','varA')

    @property.setter
    def varA(self, value):
        self.db_con.updateDb('variablelist', value)

您还可以使用 SQLAlchemy 框架重构您的模型。 例如

from sqlalchemy (
    create_engine,
    Column, 
    Integer, 
    String,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()
engine = create_engine(DB_DNS, 
                       pool_size=DB_POOL_SIZE, 
                       max_overflow=DB_MAX_OVERFLOW,
                       pool_recycle=DB_POOL_RECYCLE,
                       isolation_level="READ UNCOMMITTED",  # attention, the last one is important!
         )
Session = sessionmaker(bind=engine,
                       autocommit=False,
                       expire_on_commit=False)

class MyTable(Base):

    __tablename__ = MY_TABLE_NAME

    id = Column(Integer, primary=True)
    name = Column(String(32), nullable=True, default='', doc='user_name')

# query something
result = Session().query(MyTable).filter(CONDITION).all()

关于python - 强制python在不重新启动代码的情况下接受来自数据库的变量更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987004/

相关文章:

Python多列表迭代

mysql - 复杂的mysql插入

mysql - Rails 一对一关系 - 外键位置

mysql - 数据库模式知识边界

python - 获取距离簇质心最近的元素

python - 使用 beautifulsoup 正则表达式不会像预期的那样匹配

与数据库同步的基于 PHP 的数据库模型?

用于从数据库获取数据然后显示在表中的 PHP 代码

python - 如何获取 n 维嵌套列表中元素的索引

mysql - 如何在不发送自动递增主键的情况下发送 POST 请求