【问题标题】:Using the same SQLite3 connection over multiple Python modules在多个 Python 模块上使用相同的 SQLite3 连接
【发布时间】:2020-08-14 16:04:44
【问题描述】:

我正在使用python-telegram-bot 在 Python3 中编写 Telegram Bot。目前,所有代码都放在一个文件中(>1k 行),结构如下:

    import ...
    a lot of bot's functions called by python-telegram-bot
    database connection (SQLite3 using SQLAlchemy)
    message's handlers
    bot.polling()

我想通过对具有相似目的的函数进行分组来将这个整体文件拆分为多个 python 文件。但是,我不知道如何处理数据库连接:在主文件中,我有一个使用 sqlalchemy 创建的 session“全局”变量,并被所有其他函数使用,因为它在同一范围内。如何正确管理多个文件?最好的方法是什么?

【问题讨论】:

  • 您将有多个模块需要对该全局变量的可见性。所以把那个变量放在一个不做任何项目导入的模式中。现在其他模块可以导入该模块而无需担心循环依赖并看到相同的变量。或者,您的所有模块化函数都可以包含连接对象作为参数。
  • @tdelaney - 阅读您的评论后,我不确定我的答案是否正确。想发表评论吗?

标签: python sqlite sqlalchemy python-telegram-bot


【解决方案1】:

在另一个文件中创建数据库连接并分配给某个变量。

导入后,在任何需要获取/修改数据库中数据的地方使用它。

P.S. 不要在该文件中执行任何 app 导入以避免循环依赖。

P.P.S. Link provided by @wwii 应该提供示例帮助

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2018-06-23
    • 2016-06-12
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多