Problem (bug?) initializing sqlite file

4 views
Skip to first unread message

Wavemaker

unread,
Jun 13, 2019, 8:38:56 AM6/13/19
to Project Camelot
I recently picked up the latest revision in the "no_shared_data" branch. I have problems with this revision to initialize a new sqlite file. See the error below.

It is triggered by a manytoone relationship in my model (that did not give trouble with much older camelot revisions).

I note how it is related to  a named constraint being used in sqlalchemy. Without really knowing what I'm doing I saw that I can avoid the error by simply removing the named constraint in camelot/core/sql.py, line 54
< "ck": "ck_%(table_name)s_%(constraint_name)s",
> "ck": "ck_%(table_name)s",
But I guess a better solution is to provide an excplicit name as sqla suggests. But I did not quickly find how to do that.

Is this possibly a bug, or a misconfiguration by me for this newer Camelot version?

Stacktrace:

2019-06-13 11:19:50,082 - sqlalchemy.engine.base.Engine
INFO - COMMIT
2019-06-13 11:19:50,089 - camelot.view.model_thread.signal_slot_model_thread
ERROR - exception caught in model thread while executing _iterate_until_blocking
Traceback (most recent call last):
File "D:\Workspace\SMARTCamelot/src\camelot\view\model_thread\signal_slot_model_thread.py", line 107, in execute
result = self._request( *self._args )
File "D:\Workspace\SMARTCamelot/src\camelot\view\action_runner.py", line 137, in _iterate_until_blocking
result = six.advance_iterator( self._generator )
File "D:\Workspace\SMARTCamelot/src/SMARTCamelot.py", line 146, in model_run
settings.setup_model()
File "D:\Workspace\SMARTCamelot/src/SMARTCamelot.py", line 103, in setup_model
metadata.create_all()
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\schema.py", line 3688, in create_all
tables=tables)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\engine\base.py", line 1856, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\engine\base.py", line 1481, in _run_visitor
**kwargs).traverse_single(element)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\visitors.py", line 121, in traverse_single
return meth(obj, **kw)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\ddl.py", line 730, in visit_metadata
_is_metadata_operation=True)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\visitors.py", line 121, in traverse_single
return meth(obj, **kw)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\ddl.py", line 764, in visit_table
include_foreign_key_constraints=include_foreign_key_constraints
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\engine\base.py", line 914, in execute
return meth(self, multiparams, params)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\ddl.py", line 68, in _execute_on_connection
return connection._execute_ddl(self, multiparams, params)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\engine\base.py", line 962, in _execute_ddl
compiled = ddl.compile(dialect=dialect)
File "<string>", line 1, in <lambda>
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\elements.py", line 494, in compile
return self._compiler(dialect, bind=bind, **kw)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\ddl.py", line 26, in _compiler
return dialect.ddl_compiler(dialect, self, **kw)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 190, in __init__
self.string = self.process(self.statement, **compile_kwargs)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 213, in process
return obj._compiler_dispatch(self, **kwargs)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\visitors.py", line 81, in _compiler_dispatch
return meth(self, **kw)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 2169, in visit_create_table
create.include_foreign_key_constraints)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 2216, in create_table_constraints
for constraint in constraints
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 2214, in <genexpr>
p for p in
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 2222, in <genexpr>
not getattr(constraint, 'use_alter', False)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 213, in process
return obj._compiler_dispatch(self, **kwargs)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\visitors.py", line 93, in _compiler_dispatch
return meth(self, **kw)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 2360, in visit_check_constraint
formatted_name = self.preparer.format_constraint(constraint)
File "<string>", line 1, in <lambda>
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\compiler.py", line 2735, in format_constraint
constraint, constraint.table)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\naming.py", line 124, in _constraint_name_for_table
metadata.naming_convention)
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\naming.py", line 79, in __getitem__
return getattr(self, '_key_%s' % key)()
File "d:\Workspace\SMARTCamelot\src\conda_env\lib\site-packages\sqlalchemy\sql\naming.py", line 43, in _key_constraint_name
"Naming convention including "
sqlalchemy.exc.InvalidRequestError: Naming convention including %(constraint_name)s token requires that constraint is explicitly named.
2019-06-13 11:19:52,033 - camelot.admin.action
DEBUG - gui run finished
Reply all
Reply to author
Forward
0 new messages