2023-01-01から1年間の記事一覧
題目:2つのリスト、alist と blist alist に存在しない blist と合わせて結果 alist にする。(マージする) 結果はソートする。 結果は alist にする。 alist = [ 'a', 'c', 'b' ] blist = [ 'c', 'd', 'e', 'a' ] 単純にすぐに書いてしまう原始的なコー…
対象クラス abusiness.py from threading import Thread class AThread(Thread): def run(self)->None: print("AThread!") # TODO 処理 AThread を実行するテストされるクラス some.py class Some: def exec(self)->None: a = AThread() a.start() a.join() …
UPDATE tablename SET column = value WHERE ~ RETURNING ~ に続けて GROUP BY を書いて利かせたいと思ってそのまま書いてはダメである。WITH 句を使う。例) WITH sampleupdate AS ( UPDATE samples SET delete_flg = true WHERE delete_flg = false RETURN…
昨日、Java の祝日計算プログラムが配布先を移動したりメンテナンスしたので、 ついでに Python 版もこれと一緒に公開することにしました。 Python での日本の祝日を抽出するものは、いろんなものが既に出回っているようですが、 計算で求めるようなものは少…
入れ子状態のリストを1次元のリストに作りなおす。 例) list = [['A', 'B'], [], ['C', 'D'], ['E']] これを、['A', 'B', 'C', 'D', 'E'] にする list = [v for list_nest in list for v in list_nest] # ['A', 'B', 'C', 'D', 'E'] 辞書のリスト→1つの辞…
中国に買収されてしまったOSDN(Open Source Development Network) もはや、ここで Java祝日計算プログラムを公開する価値はなく、、 (というか、まともに繋がらなくなっているし、ダウンロードもできない) ようやく GitHubで公開することにした。https:/…
プログラムの管理の側面から、mybatis の SQLMapper をプログラムの動作中に追加することは 禁止されるべきであろう。 でも、SQLMap の XML を用意せずに Mappper インターフェースを追加することは可能なのです。SqlSession session という生成済みの SqlSe…
Java で JSON を編集するときによく使われるのが Jackson ライブラリであろう。 巨大で階層が深い中の値を変更するのは、Jackson の JsonNode としてJSONを読み込んで、コードを書くのも 面倒くさいばかりでなく、あまり汎用的なものは期待できない。 Postgr…
日付時刻出力のメモを、あえて自分でメモしたくなった。何も考えないで。。 import datetime import re ndt = datetime.datetime.now() print(type(ndt)) # <class 'datetime.datetime'> print(ndt) # 2023-11-22 20:22:21.038937 strftime を使う。 ndt = datetime.datetime.now() prin</class>…
JSON型json_pretty( column ) JSONB型jsonb_pretty( column )JSONB型の方が使う機会が多そう。 SELECT jsonb_pretty('{"f1":1,"f2":null, "f3":[1,2,3]}') { "f1": 1, "f2": null, "f3": [ 1, 2, 3 ] }
先日書いた PostgreSQL JSON の部分的更新 - Oboe吹きプログラマの黙示録 この方法では、ネストしたキーを指定して一部を更新することができない。 例) { "task": { "name": "A", "order" : 10, "limit" : "2023-12-09" } }このようなJSONに対して、'task'-…
JSON型データの一部の key value を更新する。サンプルデータ、JSON列が、次のデータである時、 {"key": "E", "name": "orange", "ppp": "pst" } 追加や更新 || で、マージする。 UPDATE jbooks SET jdata = jdata::jsonb || json_build_object( 'key', 'D',…
標準出力だけにログ出力することにして、もっとシンプルに書く。 ログフォーマットの種類の一覧のドキュメントが見つけにくいので、 ここに、リンクを→ https://docs.python.org/ja/3/library/logging.html以下、過去に書いたのは、浅はかだった。 Python ロ…
mock-Alchemy、pytest-sqlalchemy-mock を使わないでモックを作る - Oboe吹きプログラマの黙示録 の第2弾です。 mock-alchemy や、pytest-sqlalchemy-mock を使わない。 もう少し複雑なパターンです。 SQL直接実行で、パラメータを複数指定するパターンです…
Java だったら、Jackson 使用で、jackson-datatype-jsr310 ライブラリを使った デシリアライズを設定するだろう。 Jackson の 日付時刻の読込み - Oboe吹きプログラマの黙示録 jackson-datatype-jsr310 を使う - Oboe吹きプログラマの黙示録 Python の json.…
PyCharm の設定画面を開いて テストスクリプトを書いたら、実行設定は、 もちろん、pytest と pytest-mock がインストール済であることが前提
pytest-mock だけで頑張る方法今回目的の対象の検索クエリ'name'列を指定してSQLの結果から1行目の結果の 'color'列の値を取得するクエリ のメソッドがある。 class Sample: def queryColor(self, name:str)->str: sfactory = sessionmaker(autocommit=Fals…
マニュアル参照:9.15. JSON関数と演算子JSON の値、数値として SELECT されるか? '{ "a": [1,2,3] }'::json->'a'->1 この場合、2 が数値として取り出せるか?というとそうではないらしい-> この演算子のまま、 以下のように CAST してはダメだ。 CAST('{ "…
サンプル from sqlalchemy import create_engine, text from sqlalchemy.orm import Session, registry import sqlalchemy as db mapper_reg = registry() Base = mapper_reg.generate_base() class Sample(Base): __tablename__ = 'samples' id = db.Column…
代表的な filter の書き方のサンプル・メモ (try~catch は省略) from sqlalchemy import create_engine, text from sqlalchemy.orm import Session, registry import sqlalchemy as db mapper_reg = registry() Base = mapper_reg.generate_base() class …
with engine.begin() as connection: sql = 'SELECT COUNT(*) FROM samples' rows = connection.execute(text(sql)) count = list(rows)[0][0] こんな方法ではなく、scalar() を使う 例) from sqlalchemy import create_engine, text from sqlalchemy.orm i…
簡単なサンプルで、、、 まずは、Session使用メソッドの呼び出し側で捕捉 from sqlalchemy import create_engine, text from sqlalchemy.orm import Session # 接続情報、username, password, host, port, dbname は設定済 engine = create_engine(f'postgre…
以前、あまりにも内容が薄い安易なものをここに書いたので、もう少しまともなメモを 書こうと思った。create_engine from sqlalchemy import create_engine, text host = 'localhost' port = 5432 username = 'myuser' password = 'p1234' dbname = 'sampled…
UUID型のタイプハンドラの必要性をあまり感じなかったので、今まで書いてなかった。 PostgreSQL なら、gen_random_uuid() 関数で生成してくれるし SELECT クエリ結果も、mybatis は、String に自動マッピングで抽出できるとなると、 あまり、java.util.UUID …
SELECT 句等での uuid の 文字列への変換、 ::text もしくは、::varchar を付ける。GROUP BY なんかで集計した場合の例、 string_agg(id::text , ',' order by create_time) AS idjoin または、 string_agg(id::varchar , ',' order by create_time) AS idjo…
過去、以下2つを投稿しましたが、 PostgreSQL で mySQL の last_insert_id() 相当をmybatis で実装したい - Oboe吹きプログラマの黙示録PostgresSQL アップサートのインクリメント - Oboe吹きプログラマの黙示録そもそも、PostgreSQL の RETURNING は、INSE…
1つの方法→ zip()サンプル:split で生成した2つのリスト a = 'a,b,c,d' b = '1,2,3,4' for x, y in zip(a.split(','), b.split(',')): print('%s - %s' % (x, y)) print 結果 a - 1 b - 2 c - 3 d - 4tuple のリストにする。 c = [(x, y) for x, y in zip…
MySQL の GROUP_CONCAT と同様のことをやる。GROUP BY を指定したSELECT で、STRING_AGG を使う。書式は、 STRING_AGG ( expression, separator [order_by_clause] )order by で指定する列は、他の列でもいい
UPDATE 時のインクリメントがうまくいくからといって、 アップサートでのインクリメントが同じ構文では効かないのが PostgresSQLこんなテーブルがあった時、 CREATE TABLE ITEMS ( ID VARCHAR(6), NAME VARCHAR(20), U_COUNT INTEGER, PRIMARY KEY (id) ) こ…
Java ではなく Python の話です。 Thread生成時の引数にどういう転送用のオブジェクトを渡すか。。。 以下、サンプルです。 Queue を使う ThA.py # -*- coding: utf-8 -*- from threading import Thread import time import sys sys.path.append("../logtool…