Я пытаюсь использовать engine_from_config() в конструкторе класса. Учебники и материалы в Интернете настолько запутанны. Я новичок в этом и боролся с тем, что кажется простой задачей. Любая помощь по реализации .engine_from_config() в конструкторе действительно оценена!Работа с sqlalchemy 'engine_from_config'
Это имеет смысл для меня:
class BaseAPI(object):
_userclass = None
_userassessment = None
def __init__(self, config, prefix='sqlalchemy.', **kwargs):
assert self_userclass is not None
config = {'sqlalchemy.url':
'sqlite:///./somedb.db', 'sqlalchemy.echo':'True'}
self.engine = sqlalchemy.engine_from_config(config)
dbSession = scoped_session(sessionmaker(autoflush = True,
autocommit = False,
bind = engine))
Base.metadata.create_all(bind=engine)
print('--start DB Session--')
return dbSession
Но в учебники я прочитал, что способ реализации sqlalchemy.engine_from_config является этим:
options = dict((key[len(prefix):], configuration[key])
for key in configuration
if key.startswith(prefix))
options['_coerce_config'] = True
options.update(kwargs)
url = options.pop('db')
return create_engine(url, **options)
Я думаю, что я может быть более думая об этом или, может быть, более позднем для реального класса sqlalchemy.engine_from_config .... Почему мой код не работает для меня?
Новых рабочие Изменения:
class BaseAPI(object):
def __init__(self):
config = {'sqlalchemy.url':'sqlite:///./somedb.db', 'sqlalchemy.echo':'True'}
self.engine = engine_from_config(config, prefix='sqlalchemy.')
Session = sessionmaker(autoflush=True,autocommit=False,bind=engine)
self.session = Session()
Base.metadata.create_all(bind=engine)
НОВЫЙ ВОПРОС: Должен ли я вернуть мою сессию? Кроме того, не нужно ли мне иметь вызов «create_engine» в моем init? У меня это в другом файле, и я верю, что это работает.
Не могли бы вы прояснить * как * это не работает? Сообщения об ошибках и т. Д. –
Должен ли я возвращать сеанс? Должен ли я добавлять конфиг в параметры init? – thesayhey