sqlalchemy: alembic bulk insert fails: 'str' object has no attribute '_autoincrement_column'

前端 未结 1 1231
难免孤独
难免孤独 2020-12-19 00:47

My model looks like

class Category(UserMixin, db.Model):
    __tablename__ = \'categories\'
    uuid = Column(\'uuid\', GUID(), default=uuid.uuid4, primary_         


        
相关标签:
1条回答
  • 2020-12-19 01:46

    all I had to do is to create a table before bulk_insert, even if I have a explicit schema in separate models.py

    import sqlalchemy as sa
    from sqlalchemy.sql import table
    from alembic import op
    
    def upgrade():
         categories = table('categories',
                           sa.Column('uuid', UUID(),
                                  primary_key=True,
                                  unique=True, autoincrement=False),
                           sa.Column('name', String),
                           sa.Column('parent', String),
                           sa.Column('created_on', sa.types.DateTime(timezone=True),
                                  default=datetime.utcnow())
        )
        op.bulk_insert(categories,
                       [
                           {'name': 'first', 'parent': 'first_parent'},
                           {'name': 'second', 'parent': 'second_parent'}
                       ]
        )
    

    and then I was able to to run alembic upgrade head without any issues and data was serialized successfully in database.

    0 讨论(0)
提交回复
热议问题