Я хочу, чтобы alembic получил текущую хранимую процедуру из БД, сравнил ее с той, что в коде.Если они отличаются для обновления БД.
Я отредактировал файл env.py, чтобы проверить это, и сгенерировал версии обновления исходного SQL.
при выполнении следующих действий:
writer = rewriter.Rewriter()
@writer.rewrites(ops)
def stored_procedure(context, revision, op):
if not change_detected():
print("did not detect difference in stored procedure.")
return op
else:
print("detected difference in stored")
package_sql = open(migration_file_path, "r")
package_sql = migration_file.read()
package_sql = '"""' + package_sql + '"""'
return [
op,
op.get_bind().execute(package_sql),
]
Traceback (most recent call last):
File "c:\Project\.vscode\extensions\ms-python.python-2019.9.34911\pythonFiles\ptvsd_launcher.py", line 43, in <module>
main(ptvsdArgs)
File "c:\Project\.vscode\extensions\ms-python.python-2019.9.34911\pythonFiles\lib\python\ptvsd\__main__.py", line 432, in main
run()
File "c:\Project\.vscode\extensions\ms-python.python-2019.9.34911\pythonFiles\lib\python\ptvsd\__main__.py", line 316, in run_file
runpy.run_path(target, run_name='__main__')
File "C:\Project\Programs\Python\Python37\lib\runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "C:\Project\Programs\Python\Python37\lib\runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "C:\Project\Programs\Python\Python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:/Project/manage.py", line 15, in <module>
manager.run()
...
File "C:\Project\ENV\lib\site-packages\alembic\runtime\migration.py", line 351, in run_migrations
for step in self._migrations_fn(heads, self):
File "C:\Project\ENV\lib\site-packages\alembic\command.py", line 173, in retrieve_migrations
revision_context.run_autogenerate(rev, context)
File "C:\Project\ENV\lib\site-packages\alembic\autogenerate\api.py", line 433, in run_autogenerate
self._run_environment(rev, migration_context, True)
File "C:\Project\ENV\lib\site-packages\alembic\autogenerate\api.py", line 483, in _run_environment
hook(migration_context, rev, self.generated_revisions)
File "migrations\env.py", line 167, in process_revision_directives
stored_procedure(context, revision, directives)
File "migrations\env.py", line 146, in stored_procedure
op.get_bind().execute(package_sql),
AttributeError: 'list' object has no attribute 'get_bind'