zoukankan      html  css  js  c++  java
  • 如何在Alembic upgrade脚本中执行插入和更新数据库记录 [Flask] [Sqlalchemy] [Alembic] [python]

    1. 插入数据

    """empty message
    
    Revision ID: c15fcfd8e40a
    Revises: 35ca68348a8d
    Create Date: 2021-01-05 19:39:22.768992
    
    """
    from alembic import op
    import sqlalchemy as sa
    from sqlalchemy.sql import table, column
    
    # revision identifiers, used by Alembic.
    revision = 'c15fcfd8e40a'
    down_revision = '35ca68348a8d'
    branch_labels = None
    depends_on = None
    
    
    def upgrade():
        # ### commands auto generated by Alembic - please adjust! ###
        op.create_table(
            'users',
            sa.Column('id', sa.String(length=45), nullable=False),
            sa.Column('name', sa.String(length=100), nullable=False),
            sa.PrimaryKeyConstraint('id')
        )
    
        # insert records
        user_table = table(
            'users',
            column('id', sa.String),
            column('name', sa.String)
        )
        op.bulk_insert(
            user_table,
            [
                {
                    "id": "123",
                    "name": "Hello"
                },
                {
                    "id": "234",
                    "name": "World"
                },
            ]
        )
    
    
    def downgrade():
        # ### commands auto generated by Alembic - please adjust! ###
        op.drop_table('users')
        # ### end Alembic commands ###
    
    

    2. 更新数据库中的数据

    """empty message
    
    Revision ID: c15fcfd8e40a
    Revises: 35ca68348a8d
    Create Date: 2021-01-05 19:39:22.768992
    
    """
    from alembic import op
    import sqlalchemy as sa
    
    # revision identifiers, used by Alembic.
    revision = 'c15fcfd8e40a'
    down_revision = '35ca68348a8d'
    branch_labels = None
    depends_on = None
    
    
    def upgrade():
        # ### commands auto generated by Alembic - please adjust! ###
        op.create_table(
            'users',
            sa.Column('id', sa.String(length=45), nullable=False),
            sa.Column('name', sa.String(length=100), nullable=False),
            sa.Column('password', sa.String(length=150), nullable=False),
            sa.PrimaryKeyConstraint('id')
        )
        # update records
        bind = op.get_bind()
        for user in bind.execute('select id, name from users'):
            if user[1] is None:
                bind.execute("update users set name = %s where id = '%s'" % ("hello_world", user[0]))
        # ### end Alembic commands ###
    
    def downgrade():
        # ### commands auto generated by Alembic - please adjust! ###
        op.drop_table('users')
        # ### end Alembic commands ###
    
  • 相关阅读:
    Java 面向对象(十二)类的成员 之 代码块
    Java 关键字:static
    Java 常用类(二):包装类(Wrapper)
    Java 之 clone 方法(对象拷贝)
    SQL分组聚合查询
    Rabbitmq消息持久化
    idea 插件
    TCP粘包,拆包及解决方法
    redis内存淘汰策略及如何配置
    MySQL存储过程/存储过程与自定义函数的区别
  • 原文地址:https://www.cnblogs.com/guohewei/p/14975029.html
Copyright © 2011-2022 走看看