【问题标题】:SQLite Database connection creation globally or as the function runs?全局或函数运行时创建 SQLite 数据库连接?
【发布时间】:2021-05-12 18:46:10
【问题描述】:

我正在制作一个不和谐的机器人,性能是我的首要任务。我想知道如果我在函数运行而不是全局运行时建立数据库连接怎么办?哪一个会更好? 像这样;

import sqlite3

conn= sqlite.connect("somedb.db")

或者;

import sqlite3

def main():
    sqlite.connect("somedb.db")
    ...

# some other functions defined below.

【问题讨论】:

  • 你的函数多久被调用一次?如果经常你最好在函数之外创建连接。将连接或光标传递给函数。
  • @mhawke 感谢您的回答。我的函数经常被调用。所以,我会在全球范围内再次感谢您的回答。

标签: python sqlite discord bots


【解决方案1】:

如果性能对这一点很重要,您应该考虑使用不同的语言,例如 C,或者至少是 C++ 或 Java。虽然 Python 是一门注重可读性的优秀语言,但最初是作为脚本语言设计的,性能并不是它的最佳点。

话虽如此,两种方式之间不应该有任何明显的性能差异:昂贵的函数被调用一次,句号。主要区别在于范围。使用第一种方式,您有一个模块级变量,可以从该模块中的任何位置直接访问。使用第二种方式,你有一个函数局部变量,它必须明确地传递给从main调用的所有函数。

这是一个设计决定,而不是性能驱动的决定。

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多