Does anyone have an idea what I may be doing wrong?

Thanks for your help in advance.


On May 11, 4:29 pm, gostones <gosto...@gmail.com> wrote:
> I am running mysql in production but would like to run a simple tests
> in a sqlite in memory db.
>
> The legacy mysql db has tables with columns that are mysql specific
> types, Which are declared in declarative models (subclassing
> declarative_base). I would like to run some simple tests without going
> to mysql and so would need to swap out the columns of the model.
>
> How do I do this? I've tried writing a patcher/unpatcher to swap out
> table in my model, but when I run some tests, I get
>
> OperationalError: (OperationalError) near ")": syntax error u'\nCREATE
> TABLE my_table (\n)\n\n' ()
>
> Which makes my think that I am not patching the columns properly.
>
> Does anyone know how I can do this? What am I doing wrong?
>
> Currently, I create new columns and attach brand new Table object to
> __table__ and save the old table.
>
> The DB is created, create_all() is and convert_columns is run in
> setUp. drop_all() and revert_columns is run during tearDown in my
> tests
>
> mysql_sqlite_mapping = {INTEGER: Integer,
>                         MEDIUMINT: Integer,
>                         TEXT: text}
>
> def convert_columns(self, my_class, mapping):
>     for column in my_class.__table__.columns:
>         if type(column.type) in mapping:
>             replacement_col = Column(column.name,
>                                      mapping[type(column.type)],
>                                      primary_key=column.primary_key,
>                                      nullable=column.nullable,
>                                      key=column.key,
>                                      unique=column.unique)
>
>             converted_columns.append(replacement_col)
>
>     self.registry[my_class] = my_class.__table__
>
>     my_class.__table__.metadata.remove(my_class.__table__)
>     my_class.__table__ = Table(my_class.__table__.name,
>                                my_class.__table__.metadata)
>
>     for column in converted_columns:
>         my_class.__table__.append_column(column)
>
>     return my_class
>
> def revert_columns(self, my_class):
>     saved_table = self.registry[my_class]
>
>     metadata = my_class.__table__.metadata
>     my_class.__table__.metadata.remove(my_class.__table__)
>
>     model_class.__table__ = Table(saved_table.name,
>                                   metadata)
>
>     for column in saved_table.columns:
>         column.table = None
>         my_class.__table__.append_column(column)
>
>     self.registry.pop(my_class)

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to