sql >> データベース >  >> RDS >> Mysql

SQL Alchemyリレーションシップローダーはテーブルにロックを残しますか?

    .drop_all()の前に新しいトランザクションを開始する必要があります 電話; MySQLは、このトランザクションでテーブルからの読み取りを確認し、テーブルが削除されないようにロックします。

    session.commit()
    Base.metadata.drop_all()
    

    トランザクションをコミットすると、暗黙的に新しいトランザクションが開始されます。

    MySQLはトランザクション分離について保証します。トランザクションは一貫性のあるデータを読み取り、新しいトランザクションを開始するまで他のトランザクションによってコミットされた変更を確認しません。 DROP TABLE ただし、ステートメントを使用すると、MySQLがこれらの保証を維持できなくなるため、テーブルがロックされます。

    または、トランザクション分離レベルを変更して、分離保証を気にしないようにMySQLに指示することもできます。セッション接続はプールされるため、これはすべての接続に対してのみ実行できるか、まったく実行できません。 isolation_levelを使用します create_engine()>

    engine = create_engine(
        'mysql://username:[email protected]/databasename',
        isolation_level='READ UNCOMMITTED')
    

    SET TRANSACTIONを参照してください ドキュメント 各分離レベルの詳細については。




    1. データベースホスト配列が空です。 AWSElasticBeanstalkにLaravelプロジェクトをデプロイした後

    2. MySQLストアドプロシージャをどのようにデバッグしますか?

    3. ユーザーモデルをPostgresにHibernateで保存する

    4. MySQLデータベースの文字に関するUTF-8の問題(例:éasé)