我应该如何为我的python应用程序构建一个简单的数据库包?

Car*_*ers 5 python database sqlite library-design

我正在使用sqlite3作为基础为我的应用程序构建数据库库.我想像这样构造它:

db/
    __init__.py
    users.py
    blah.py
    etc.py    

所以我会用Python做到这一点:

import db
db.users.create('username', 'password')
Run Code Online (Sandbox Code Playgroud)

我正在分析如何处理数据库连接的分析瘫痪(哦不!).我真的不想在这些模块中使用类,能够创建一堆可以以相同方式操作同一数据库的"用户"对象似乎并不合适 - 因此继承连接是不走.

我是否应该与所有模块使用的数据库建立一个全局连接,然后将其放在每个模块中:

#users.py
from db_stuff import connection
Run Code Online (Sandbox Code Playgroud)

或者我应该为每个模块创建一个新连接并保持活着吗?

或者我应该为每个交易创建一个新连接?

这些数据库连接应该如何使用?对于游标对象也是如此:我是否为每个事务创建一个新游标?为每个数据库连接只创建一个?

Eli*_*sky 5

不,不要将连接分散到多个模块上 - 这是糟糕的设计。让单个类处理数据库连接并向应用程序中的其他类/模块提供服务。

这与非数据库相关的良好设计原则没有什么不同。连接是全局资源。在许多模块上共享该资源类似于拥有一个可从许多地方访问的全局变量——默认情况下这是一件坏事(除非你有一个非常令人信服的理由,但你没有)。将全局资源封装在一个类中来处理它。