問題タブ [sqlalchemy-migrate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sqlalchemy - sqlalchemy を使用して既存のテーブルに列を追加する
sqlalchemy を使用して既存のテーブルに列を追加する方法はありますか? オプションを見ると、sqlalchemy-migrate が一般的なオプションのようですが、静的な変更を中心に設計されているようです。また、移行をサポートするように DB をセットアップし、メイン アプリケーションの外部でスクリプトを実行して更新する必要もあります。特定のxmlが編集された場合、データを維持するために古い列を削除するのではなく、新しい列を簡単に追加できるようにしたいと考えています。
私はこのデザインを擁護することに興味はありません。方法があるかどうか知りたいだけです。
sqlalchemy - トランザクションで create および sqlalchemy-migrate の Alter ステートメントをラップする方法
sqlalchemy table.create および sqlalchemy-migrate table.rename メソッドに加えて、select ステートメントへの挿入を使用して、db にいくつかの db スキーマの変更を試みています。これらすべてをトランザクションにラップしたいと思います。これを行う方法がわかりません。これは私が試したものです:
しかし、次のエラーが発生します。
(sqlalchemy-migrate column.alter(name='newname') を使用してみましたが、エラーが発生し、トランザクションで機能しないため、データベースが壊れた状態のままになります。また、複数の列の名前を変更する必要があるため、自分のコードをロールすることにしました。)
python - sqlalchemy-migrate を使用して列名変更の移行を記述する方法は?
列名を変更しようとしています。最初の試みはこのスクリプトでした:
migrate.py test
私の開発データベース(sqlite)での実行は機能し、アップグレードとダウングレードも機能します。しかし、Heroku のテスト環境 (PostgreSQL 8.3 を使用) にデプロイすると、アップグレードしようとするとトレースが表示されます。要点は次のメッセージです。
次にusers.c.user_id
、アップグレード方法で使用しようとしました。それは両方の環境で失敗します。
私が現在使用している回避策は、次のスクリプトです。
モデルをコピーして sqlalchemy-migrate スクリプトに貼り付けることは、既に推奨されている方法です。しかし、この余分な重複は私には少し多すぎます。これをどのように行うべきかは誰でも知っています。バグだと仮定して、回避策をいくつか DRY する方法について提案をお願いします。
python - django-evolution に相当する SQLAlchemy はありますか?
私が望むのは、ワークフローが次のようになることだけです。
- プロジェクトの INSTALLED_APPS に django_evolution を追加します
- ./manage.py syncdb を実行します
- プロジェクト内のモデル ファイルに変更を加える
- ./manage.py evolve --hint --execute を実行します
これは非常にシンプルで、高度な機能(複数のデータベースなど)をサポートしていませんが、一般的なユースケースである列を追加/削除する方法を知っています.
sqlalchemy-migrate のワークフローは非常に複雑で、ドキュメントで参照されている両方のチュートリアル ( 1、2 ) は古くなっているか、無関係です。
python - ピラミッド スキーマの移行
Gentoo で "vanilla" Pyramid 1.4 を使用しています。テーブルに変更を加えて、テーブル (およびそのすべてのデータ) を削除せずにコミットしてから再作成したいと考えています。これに対する解決策はスキーマの移行だと聞きました。
長年の Django ユーザーである私は を使用してきましたがdjango-south
、現在は Pyramid を使用しており、移行を処理する方法が見つかりません。について読んだことがsqlalchemy-migrate
ありますが、これは非常に良さそうですが、Pyramid で動作させる方法がわかりません。
Pyramid 1.4 でスキーマの移行を処理する方法はありますか? そして、使用することsqlalchemy-migrate
が賢明なオプションである場合、どうすれば Pyramid で動作させることができますか?
乾杯。
mysql - SQLAlchemy Migrate を使用して重複する外部キーを削除する
誤って、同じテーブルと列を参照する 2 つの外部キーを追加しました。次のSHOW CREATE TABLE table_a
ように見えます:
この時点での私の唯一の解決策は、列のすべてのキー/制約を反復処理し、それらを削除してから、カスケード キーをもう一度追加することです。
SQLAlchemy Migrateを使用して非カスケード制約のみを削除する方法はありますか?
sqlalchemy - Sqlalchemy-migrate がデフォルト値でカラムを作成
SQLAlchemy-migrate 0.6.1を使用して、mysql データベースのバージョン管理を処理しています。リンクはドキュメントへのリンクです。しかし、彼らは 0.6.1 のドキュメントを削除したようです。
次のようなテーブルに外部キー制約を持つ新しい列を追加しようとしています:
これは機能しますが、mysql は server_default をデフォルト値として保存し、それをすべての新しいレコードに追加します。私の場合、このデフォルト値は変わりません。
列にデフォルトを設定したいのですが、mysql にデフォルトとして保存したくありません。
ドキュメントでこれを見つけました:
しかし、それは sqlalchemy-migrate のより新しいバージョンに追加されていると思われます。sqlalchemy-migrate の 0.6.1 バージョンでこれが可能かどうかは誰にもわかりませんか?
python - SqlAlchemyの奇妙なエラー-列タイプBigIntegerのcolumn.copy()で移行します。
状況は少し単純化されています。sqlalchemy-migrate用の2つの移行ファイルがあります。
First
テーブルを作成し、それvolume_usage_cache
を自動ロードし、その列のコピーを作成して印刷します。
そして、私は私が期待したものをログに記録します:
しかし、Second
移行ファイル(後に実行されるFirst
)に列のコピーを作成すると、次のようになります。
別の結果が得られます:
なぜcurr_write_bytes
列にNullTypeがあるのですか?
python - Flask データベースの問題
このチュートリアルをガイドラインとして使用しています。http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database
複数の商品をまとめられるカテゴリーが欲しいです。彼が複数の投稿を持つユーザーを持っている方法に似ています。
Pythonインタープリターを開いてカテゴリを作成しようとすると
このエラーが発生します
したがって、後方参照に問題があります。チュートリアル (私は彼のコードで試しました) で、彼は同様の構文で User を作成することができます。
彼のすべてのファイルを使用して、新しいデータベースを作成して移行しようとしたところ、同じエラーが発生しました。
ここに私のmodels.pyファイルがあります:
python - sqlalchemy-migrate を使用して列の型を可変文字から整数に変更する方法
sqlalchemy-migrate を使用して、Postgre SQL データベースのテーブルの列の 1 つの型を変更しています。私が使用しているアップグレードスクリプトは次のとおりです。
アップグレード部分は機能しているように見えますが、ダウングレードは常に次のエラーで失敗します:
ここで、プレーン SQL を使用していた場合ALTER TABLE courses ALTER COLUMN number TYPE INTEGER USING number::numeric
、列の型を からcharacter varying
に戻すために使用できますinteger
が、sqlalchemy-migrate を使用してそれを達成する方法がわかりません。
sqlalchemy を強制的にUSING number::numeric
句ALTER
に含める方法はありますか? または、上に投稿したエラーを回避する別の方法はありますか?
私はあなたの助けに感謝します。