История изменений
Исправление micronekodesu, (текущая версия) :
Это означает, что ты не понимаешь, как работает импорт модулей в Python.
Да, я затупил, но сейчас с нуля сделал все это и у меня появилась идея. У меня была проблема - либо я все таблицы гружу разом при инициализации модуля работы с базой (долго и не нужно), либо если я делаю это отдельными функциями то у меня будут разные объекты все время. Теперь мне кажется что я нашел нормальный вариант, покритикуй, пожалуйста.
"Основной" модуль, отвечает за коннекты, m0.py
:
import uuid
dbdata = {}
def getTable(table):
if table not in dbdata:
dbdata[table] = uuid.uuid4().hex
return dbdata[table]
Пример модулей, который работает с базой - m1.py
, m2.py
, код одинаковый, но чтоб импортнуть два раза это отдельные файлы:
import m0
foo = m0.getTable('foo')
bar = m0.getTable('bar')
Проверяю:
$ cat script.py
#!/usr/bin/env python3
import m1
import m2
print(m1.foo, m2.foo, m1.foo == m2.foo)
print(m1.bar, m2.bar, m1.bar == m2.bar)
$ ./script.py
071c8ebb0a60413a8b6636dd3c2570f9 071c8ebb0a60413a8b6636dd3c2570f9 True
746cc3f675ab440aa3b476f10eb58bfb 746cc3f675ab440aa3b476f10eb58bfb True
Исправление micronekodesu, :
Это означает, что ты не понимаешь, как работает импорт модулей в Python.
Да, я затупил, но сейчас с нуля сделал все это и у меня появилась идея. У меня была проблема - либо я все таблицы гружу разом при инициализации модуля работы с базой (долго и не нужно), либо если я делаю это отдельными функциями то у меня будут разные объекты все время. Теперь мне кажется что я нашел нормальный вариант, покритикуй, пожалуйста.
"Основной" модуль, отвечает за коннекты, m0.py
:
import uuid
dbdata = {'tables': {}}
def getTable(table):
if table not in dbdata['tables']:
dbdata['tables'][table] = uuid.uuid4().hex
return dbdata['tables'][table]
Пример модулей, который работает с базой - m1.py
, m2.py
, код одинаковый, но чтоб импортнуть два раза это отдельные файлы:
import m0
foo = m0.getTable('foo')
bar = m0.getTable('bar')
Проверяю:
$ cat script.py
#!/usr/bin/env python3
import m1
import m2
print(m1.foo, m2.foo, m1.foo == m2.foo)
print(m1.bar, m2.bar, m1.bar == m2.bar)
$ ./script.py
071c8ebb0a60413a8b6636dd3c2570f9 071c8ebb0a60413a8b6636dd3c2570f9 True
746cc3f675ab440aa3b476f10eb58bfb 746cc3f675ab440aa3b476f10eb58bfb True
Исходная версия micronekodesu, :
Это означает, что ты не понимаешь, как работает импорт модулей в Python.
Да, я затупил, но сейчас с нуля сделал все это и у меня появилась идея. У меня была проблема - либо я все таблицы гружу разом при инициализации модуля работы с базой (долго и не нужно), либо если я делаю это отдельными функциями то у меня будут разные объекты все время. Теперь мне кажется что я нашел нормальный вариант, покритикуй, пожалуйста.
"Основной" модуль, отвечает за коннекты, m0.py
:
import uuid
dbdata = {'tables': {}, 'connection': None}
def getTable(table):
if table not in dbdata['tables']:
dbdata['tables'][table] = uuid.uuid4().hex
return dbdata['tables'][table]
def getConnection():
if dbdata['connection'] is None:
dbdata['connection'] = uuid.uuid4().hex
return dbdata['connection']
Пример модулей, который работает с базой - m1.py
, m2.py
, код одинаковый, но чтоб импортнуть два раза это отдельные файлы:
import m0
connection = m0.getConnection()
foo = m0.getTable('foo')
bar = m0.getTable('bar')
Проверяю:
$ cat script.py
#!/usr/bin/env python3
import m1
import m2
print(m1.connection, m2.connection, m1.connection == m2.connection)
print(m1.foo, m2.foo, m1.foo == m2.foo)
print(m1.bar, m2.bar, m1.bar == m2.bar)
$ ./script.py
56a761c10caf47fb8608b7fff836f877 56a761c10caf47fb8608b7fff836f877 True
071c8ebb0a60413a8b6636dd3c2570f9 071c8ebb0a60413a8b6636dd3c2570f9 True
746cc3f675ab440aa3b476f10eb58bfb 746cc3f675ab440aa3b476f10eb58bfb True