Я разбиваю большой монолитный файл Python на шесть отдельных подмодулей.
Изначально в onebigfile.py у меня было
conn = MySqldb.connect()
c = conn.cursor()
и тогда функция будет использовать его так:
def getFromDB():
c.execute(sql)
Теперь я перестроил свой модуль на
NewModule/
__init__.py
users.py
accounts.py
sixmoreofthese.py
Что я озадачиваю, так это то, что делать с полуна дефицитными ресурсами, такими как соединение с MySQL.
Есть ли способ доступа к родительскому пространству имен, например, conn.
и c.
можно вставить в __init__.py
? Я не хочу создавать целую кучу соединений с MySQL. Просто сбросить их туда и вызвать их, как будто они являются частью глобального пространства имен, не работает .. То есть:
__init__.py:
conn = MySqldb.connect()
c = conn.cursor()
> import NewModule
> NewModule.users.login('a','b')
--- login function calls the Mysql c. from the global namespace and can't find it.
Чтобы предугадать одно предположение: имеет смысл разделить эти файлы - существует примерно 50-75 тыс. Python и группа людей, которым нужно работать с кодом, плюс есть довольно четкие концептуальные группировки функциональности.