# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
target_metadata =metadata
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
defrun_migrations_offline():
"""Run migrations in 'offline' mode.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don't even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the
script output.
"""
url =config.get_main_option("sqlalchemy.url")
context.configure(
url=url,
target_metadata=target_metadata,
literal_binds=True
)
withcontext.begin_transaction():
context.run_migrations()
defrun_migrations_online():
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
withengine.connect()asconnection:
context.configure(
connection=connection,
target_metadata=target_metadata
)
withcontext.begin_transaction():
context.run_migrations()
ifcontext.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()
|
It seems now the tables are created properly but alembic still raise
exception bytable names
|
INFO [alembic.runtime.migration]Contextimpl FirebirdImpl.
INFO [alembic.runtime.migration]Willassume transactional DDL.
INFO [alembic.autogenerate.compare]Detectedadded table 'COMPANIES'
INFO [alembic.autogenerate.compare]Detectedadded table 'CARD'
INFO [alembic.autogenerate.compare]Detectedadded table 'LOCATIONS'
INFO [alembic.autogenerate.compare]Detectedadded table 'RADIO'
Traceback(most recent call last):
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/bin/alembic",line
9,in<module>
load_entry_point('alembic==0.8.8','console_scripts','alembic')()
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/config.py",line
479,inmain
CommandLine(prog=prog).main(argv=argv)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/config.py",line
473,inmain
self.run_cmd(cfg,options)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/config.py",line
456,inrun_cmd
**dict((k,getattr(options,k))fork inkwarg)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/command.py",line
117,inrevision
script_directory.run_env()
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/script/base.py",line
407,inrun_env
util.load_python_file(self.dir,'env.py')
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/util/pyfiles.py",line
93,inload_python_file
module=load_module_py(module_id,path)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/util/compat.py",line
68,inload_module_py
module_id,path).load_module(module_id)
File"<frozen importlib._bootstrap_external>",line
388,in_check_name_wrapper
File"<frozen importlib._bootstrap_external>",line 809,inload_module
File"<frozen importlib._bootstrap_external>",line 668,inload_module
File"<frozen importlib._bootstrap>",line 268,in_load_module_shim
File"<frozen importlib._bootstrap>",line 693,in_load
File"<frozen importlib._bootstrap>",line 673,in_load_unlocked
File"<frozen importlib._bootstrap_external>",line 665,inexec_module
File"<frozen importlib._bootstrap>",line 222,in_call_with_frames_removed
File"spgt/env.py",line 123,in<module>
run_migrations_online()
File"spgt/env.py",line 117,inrun_migrations_online
context.run_migrations()
File"<string>",line 8,inrun_migrations
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/runtime/environment.py",line
797,inrun_migrations
self.get_context().run_migrations(**kw)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/runtime/migration.py",line
303,inrun_migrations
forstep inself._migrations_fn(heads,self):
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/command.py",line
97,inretrieve_migrations
revision_context.run_autogenerate(rev,context)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/autogenerate/api.py",line
369,inrun_autogenerate
self._run_environment(rev,migration_context,True)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/autogenerate/api.py",line
405,in_run_environment
autogen_context,migration_script)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/autogenerate/compare.py",line
22,in_populate_migration_script
_produce_net_changes(autogen_context,upgrade_ops)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/autogenerate/compare.py",line
48,in_produce_net_changes
autogen_context,upgrade_ops,schemas
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/util/langhelpers.py",line
314,ingo
fn(*arg,**kw)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/autogenerate/compare.py",line
77,in_autogen_for_tables
inspector,metadata,upgrade_ops,autogen_context)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/alembic/autogenerate/compare.py",line
138,in_compare_tables
inspector.reflecttable(t,None)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/engine/reflection.py",line
605,inreflecttable
exclude_columns,reflection_options)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/engine/reflection.py",line
727,in_reflect_fk
**reflection_options
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/sql/schema.py",line
436,in__new__
metadata._remove_table(name,schema)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/util/langhelpers.py",line
60,in__exit__
compat.reraise(exc_type,exc_value,exc_tb)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/util/compat.py",line
186,inreraise
raisevalue
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/sql/schema.py",line
431,in__new__
table._init(name,metadata,*args,**kw)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/sql/schema.py",line
507,in_init
self._autoload(metadata,autoload_with,include_columns)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/sql/schema.py",line
519,in_autoload
self,include_columns,exclude_columns
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/engine/base.py",line
1528,inrun_callable
returncallable_(self,*args,**kwargs)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/engine/default.py",line
364,inreflecttable
returninsp.reflecttable(table,include_columns,exclude_columns)
File"/home/uralbash/Projects/_tmp/_NotAliens/.sacrud_env/lib/python3.5/site-packages/sqlalchemy/engine/reflection.py",line
598,inreflecttable
raiseexc.NoSuchTableError(table.name)
sqlalchemy.exc.NoSuchTableError:readers
|
пятница, 11 ноября 2016 г., 19:48:49 UTC+5 пользователь Mike Bayer написал:
SQLAlchemy has a case sensitivity behavior that assumes an all
lowercase
name to indicate "case insensitive". Firebird and Oracle both use
ALL_UPPERCASE to indicate "case insensitive". SQLAlchemy converts
between these two.
Therefore if your table shows up in Firebird as SOME_TABLE, assuming it
is not a *quoted* name, call upon it in SQLAlchemy as:
# if name is *not* quoted
t = Table("some_table", m, autoload_with=engine)
if the name is truly the case-sensitive, quoted "SOME_TABLE", then you
can manually pass this in as:
# if name *is* quoted
from sqlalchemy.sql.elements import quoted_name
t = Table(quoted_name("SOME_TABLE", True), m, autoload_with=engine)
quoted_name is at
http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=quoted#sqlalchemy.sql.elements.quoted_name
<http://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=quoted#sqlalchemy.sql.elements.quoted_name>
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and
Verifiable Example. See http://stackoverflow.com/help/mcve for a full
description.
---
You received this message because you are subscribed to the Google
Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to sqlalchemy+unsubscr...@googlegroups.com
<mailto:sqlalchemy+unsubscr...@googlegroups.com>.
To post to this group, send email to sqlalchemy@googlegroups.com
<mailto:sqlalchemy@googlegroups.com>.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.