I'm using postgres version 10, alembic 1.0.0, sqlalchemy 1.2.12. I'm aware 
ALTER COLUMN in SQL doesn't delete rows, but op.alter_column is doing that.

My customer & daily reading models look like:


class Customer(DeclarativeBase): 
 __tablename__ = 'customers'
 id = Column(Integer, primary_key=True)
 electricity_readings = relationship(
 'ElectricityMeterReading', cascade='all,delete-orphan',
 backref=backref('customer', cascade='all')
 )
 gas_readings = relationship(
 'GasMeterReading', cascade='all,delete-orphan',
 backref=backref('customer', cascade='all')
 )
 daily_smart_meter_readings = relationship(
 'DailyMeterReading',
 cascade='all,delete-orphan',
 backref=backref('customer', cascade='all')
 )

class DailyMeterReading(DeclarativeBase):
    __tablename__ = 'daily_smart_meter_readings'
    id = Column(Integer, primary_key=True)
    customer_pk = Column(
        Integer, ForeignKey('customers.id'), nullable=False, index=True
    )
    reading = Column(Float, nullable=False)
    reading_at = Column(UtcDateTime, nullable=False, index=True)







On Monday, October 8, 2018 at 3:26:11 PM UTC+1, Mike Bayer wrote:
>
> Hi there - 
>
> I have no idea what you are seeing.    an actual ALTER COLUMN 
> operation does not delete rows.  Of course, if you are using SQLite 
> and batch mode, that might affect things, but you have not specified 
> this.       Please specify complete information including log output, 
> stack traces, database in use, sample schema, etc. 
>
> On Mon, Oct 8, 2018 at 9:36 AM Richard <goo...@richard.do> wrote: 
> > 
> > 
> > Note that if I do the same op.alter_column on another table which has a 
> customer FK, it works fine and does not delete all the rows. 
> > 
> > On Monday, October 8, 2018 at 1:50:38 PM UTC+1, Richard wrote: 
> >> 
> >> I have an alembic migration which renames a FK column on a table from 
> 'customer_id' to 'customer_pk'. 
> >> 
> >> I used to have more in the migration file but narrowed it down to this 
> code causing all the rows to be deleted. 
> >> 
> >> def upgrade(): 
> >>     op.alter_column( 
> >>         'daily_smart_meter_readings', column_name='customer_id', 
> >>         new_column_name='customer_pk', 
> >>     ) 
> >> 
> >> 
> >> I'm using alembic==1.0.0 and Python 3.6.4. 
> >> 
> >> Is there something wrong with the above code or is this a bug in the 
> library? 
> >> 
> >> Thanks 
> > 
> > -- 
> > 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:>. 
>
> > 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.

Reply via email to