2025年11月22日(土) [長年日記]
■ [db] PostgreSQLでデータベースをコピーする
久しぶりにPostgreSQLを使っている。バージョンは18.0。
CREATE TABLE文を使って手軽にデータベースをコピーできることを知ったのでメモ。次のようにすれば、src_dbのコピーとしてdst_dbを作れる。
create database dst_db template src_db;
ただし、別のユーザーが接続中だとエラーになってコピーできないので注意。
マニュアルには次のような説明があった。
また、実際のところCREATE DATABASEのテンプレートとして名前を指定することで、クラスタ内の任意のデータベースをコピーできます。 しかし、この機能は、(まだ)汎用目的の「COPY DATABASE」能力を意図したものではないことを理解しておいてください。 コピー操作の間、他のセッションから元のデータベースに接続することができないという点は大きな制限です。 CREATE DATABASEは、その起動時に他の接続が存在する場合失敗します。 コピー操作中は元のデータベースへの新しい接続を許しません。
[ツッコミを入れる]
2025年11月27日(木) [長年日記]
■ [python] datetimeオブジェクトへ明示的にタイムゾーンを付与する
以前にシステムローカルのタイムゾーンを付与する方法をメモした。
明示的にタイムゾーンを指定したい場合はどうしたらいいか。datetime.astimezone()だとうまくいかない。
>>> import datetime >>> dt = datetime.datetime(2023, 1, 1) >>> dt.isoformat() '2023-01-01T00:00:00' >>> dt.astimezone(datetime.timezone.utc).isoformat() '2022-12-31T15:00:00+00:00'
日付が変わってしまった。datetime.replace()を使うとうまくいく。
>>> dt.replace(tzinfo=datetime.timezone.utc).isoformat() '2023-01-01T00:00:00+00:00'
[ツッコミを入れる]