fastapi / sqlmodel

SQL databases in Python, designed for simplicity, compatibility, and robustness.
https://sqlmodel.tiangolo.com/
MIT License
14.03k stars 625 forks source link

The SQL model cannot perform insertion into another table using queried data #1019

Open writebai2 opened 1 month ago

writebai2 commented 1 month ago

Issue Content

The SQL model cannot insert the queried data into the corresponding table of another database


engine = create_engine(str(settings.MYSQL_DATABASE_URL))
rds_engine = create_engine(str(settings.RDS_DATABASE_URI), echo=True)

def get_online_products():
    statement = (
        select(
            Tbl_Product
        )
        .limit(1)
    )

    with Session(engine) as session:
        products = session.exec(statement).all()
    return products

def insert_main():
    product_datas = get_online_products()
    with Session(rds_engine) as session:
        session.add_all(product_datas)
        session.commit()

if __name__ == "__main__":
    insert_main()

After execution: PS D:\python\db_visualization> D:\python\myvenv\Scripts\python.exe "d:\python\db_visualization\back_main.py"

There is no response in the table after execution

tholo commented 1 month ago

I forget if this is the case with plain SQLAlchemy -- if so, you may have to expunge() them (or all with expunge_all()) from the current session before adding it to a different one...?

writebai2 commented 1 month ago

I forget if this is the case with plain SQLAlchemy -- if so, you may have to expunge() them (or all with expunge_all()) from the current session before adding it to a different one...?

I solved this problem by using mapping to insert data instead. Thank you