0

I was testing Alembic. Initially I created a model something like this:

from main import Base
from sqlalchemy import Column, BigInteger, SmallInteger, String, Sequence, ForeignKey


class Users(Base):
    __tablename__ = "users"

    id = Column(BigInteger, Sequence("user_id_seq"),
                primary_key=True)
    first_name = Column(String(50))
    last_name = Column(String(50))
    email = Column(String(255))
    password = Column(String(60), nullable=True)

Then I created the revision in alembic and it worked absolutely fine and I got the result properly. Then I added the user types table and then my models looked like this,

from main import Base
from sqlalchemy import Column, BigInteger, SmallInteger, String, Sequence, ForeignKey


class Users(Base):
    __tablename__ = "users"

    id = Column(BigInteger, Sequence("user_id_seq"),
                primary_key=True)
    first_name = Column(String(50))
    last_name = Column(String(50))
    email = Column(String(255))
    password = Column(String(60), nullable=True)
    user_type = Column(SmallInteger, ForeignKey(
        "user_types.id", name="fk_user_type"))


class UserTypes(Base):
    __tablename__ = "user_types"

    id = Column(SmallInteger, Sequence("user_types_id_seq"),
                primary_key=True)
    type = Column(String(20))

Now I created the revision for this and obviously that also worked. But then I thought that lets make the user_type default value 1. So I did a small change in Users model and added default value 1:

user_type = Column(SmallInteger, ForeignKey(
        "user_types.id", name="fk_user_type"), default=1)

Now ideally if I created migration it should work. But it gave me the blank file:

"""Made Default Value Of user_type 1

Revision ID: 054b79123431
Revises: 84bc1adb3e66
Create Date: 2022-12-28 17:20:06.757224

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '054b79123431'
down_revision = '84bc1adb3e66'
branch_labels = None
depends_on = None


def upgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    pass
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    pass
    # ### end Alembic commands ###

I also tried to add compare_server_default=True in the context.configure calls in both offline and online migration function as it was said in an answer I found on internet which was related to the same issue but that also didnt worked. Here is the link. So if anyone knows the solution for this please tell me I would really be thankful to you!

0 Answers0