The dialect subclassed the SQLCompiler but not the DDLCompiler. Putting the visit_* statements in a DDLCompiler subclass worked! Thanks!
Now to override the UPDATE and DELETE statements since Hive doesn't support those... Will give it a whirl before asking more questions. Thanks, Alexander On Wednesday, March 1, 2017 at 2:51:42 PM UTC-5, mike bayer wrote: > > does your dialect override DDLCompiler.get_column_specification()? > That's the best way to get in extra things like NOT NULL, etc. Example: > > https://github.com/zzzeek/sqlalchemy/blob/master/lib/sqlalchemy/dialects/mysql/base.py#L982 > > > > > On 03/01/2017 02:13 PM, Alexander Peletz wrote: > > I am using the pyhive library which includes a partial implementation of > > the 'hive' dialect. I have edited various aspects of this dialect but I > > am still unable to affect the initial create table statement that > > Alembic is issuing to build the alembic_version table. Here is what > > Alembic is issuing: > > > > 'CREATE TABLE `alembic_version` (\n\t`version_num` STRING NOT NULL, > > \n\tCONSTRAINT `alembic_version_pkc` PRIMARY KEY (`version_num`)\n)\n\n' > > > > And here is what I need: > > 'CREATE TABLE `alembic_version` (\n\t`version_num` STRING\n)\n\n' > > > > I have attempted to add a visit_primary_key_constraint() method to my > > dialect which simply returns '' but this is having no effect. And I am a > > bit lost in finding which method I should override to ensure I never > > append a 'NOT NULL' string to the end of a column specification. > > > > Any recommendations? > > > > Thanks, > > Alexander > > > > > > On Friday, February 10, 2017 at 1:26:20 PM UTC-5, mike bayer wrote: > > > > > > > > On 02/10/2017 12:41 PM, Alexander Peletz wrote: > > > Great thank you for the quick response! I actually found this > morning > > > that I can put the class definition in alembic/ddl/impl.py and it > > works > > > (seemed like a logical module for it?). > > > > > > Next issue is the CREATE TABLE statement used to create the > > > alembic_version table uses keywords that are not valid HiveQL > > keywords. > > > I assume somewhere in the HiveImpl class I could override the > > contents > > > of this statement, but I couldn't figure out where/how to do that. > > > > > > for CREATE TABLE assuming you've written a whole SQLAlchemy dialect, > > you'll want to look into your DDLCompiler in the visit_create_table > > method. This is on the SQLAlchemy side, not Alembic. > > > > However, usually you don't need to override visit_create_table as a > > whole, I'd imagine you're needing to deal with something special > about > > columns, datatypes, or constraints. There are individual methods > that > > deal with those things, I'd take a look at some of the existing > > SQLAlchemy dialects to see how those things get set up. > > > > > > > > > > > > > > > > > Thanks, > > > Alexander > > > > > > On Friday, February 10, 2017 at 9:45:38 AM UTC-5, mike bayer > wrote: > > > > > > > > > > > > On 02/10/2017 07:41 AM, Alexander Peletz wrote: > > > > Hello, > > > > > > > > I would like to use Alembic to manage my Hive Metastore. I > have > > > > installed, PyHive, SqlAlchemy, and Alembic. I am able to > > create a > > > > functional engine object using the 'hive' dialect in > > sqlalchemy, > > > however > > > > I cannot get Alembic to recognize this dialect. The problem > > > appears to > > > > be a lack of a HiveImpl class in the Alembic package. I > > attempted to > > > > resolve this by creating an alembic/ddl/hive.py module and > > pasting > > > the > > > > following code into that module: > > > > > > > > > > > > from .impl import DefaultImpl > > > > > > > > class HiveImpl(DefaultImpl): > > > > __dialect__ = 'hive' > > > > > > > > > > > > you don't actually have to create a "hive.py" file. Anywhere > > in your > > > hive dialect, simply put the above code that you have (using > the > > > correct > > > imports of course). The DefaultImpl uses a metaclass that > > will allow > > > the "hive" name to be available to alembic as a result of this > > class > > > being created. > > > > > > > > > > > > > > > > > > > > > > > > > > I simply want to be able to execute raw SQL against a Hive > > > instance (no > > > > ORM implementation needed) and I was hoping to use Alembic > to > > > manage the > > > > minimum upgrade/downgrade functionality. Are there any > > simple edits I > > > > can make to the Alembic source code to allow me to achieve > > this goal? > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Alexander > > > > > > > > -- > > > > You received this message because you are subscribed to the > > Google > > > > Groups "sqlalchemy-alembic" group. > > > > To unsubscribe from this group and stop receiving emails > > from it, > > > send > > > > an email to sqlalchemy-alembic+unsubscr...@googlegroups.com > <javascript:> > > <javascript:> > > > <javascript:> > > > > <mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com > <javascript:> > > <javascript:> > > > <javascript:>>. > > > > For more options, visit https://groups.google.com/d/optout > > <https://groups.google.com/d/optout> > > > <https://groups.google.com/d/optout > > <https://groups.google.com/d/optout>>. > > > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "sqlalchemy-alembic" group. > > > To unsubscribe from this group and stop receiving emails from it, > > send > > > an email to sqlalchemy-alembic+unsubscr...@googlegroups.com > <javascript:> > > <javascript:> > > > <mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com > <javascript:> > > <javascript:>>. > > > For more options, visit https://groups.google.com/d/optout > > <https://groups.google.com/d/optout>. > > > > -- > > You received this message because you are subscribed to the Google > > Groups "sqlalchemy-alembic" group. > > To unsubscribe from this group and stop receiving emails from it, send > > an email to sqlalchemy-alembic+unsubscr...@googlegroups.com > <javascript:> > > <mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com <javascript:>>. > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.