{"id":795,"date":"2021-11-25T06:46:42","date_gmt":"2021-11-24T21:46:42","guid":{"rendered":"http:\/\/kiyonagi.jp\/?p=795"},"modified":"2021-11-25T06:46:42","modified_gmt":"2021-11-24T21:46:42","slug":"%e3%81%93%e3%82%8c%e3%81%a0%e3%81%8b%e3%82%89o-r%e3%83%9e%e3%83%83%e3%83%91%e3%83%bc%e3%81%af%e4%bd%bf%e3%81%84%e3%81%9f%e3%81%8f%e3%81%aa%e3%81%84%e3%80%82%ef%bc%88%e4%bf%ba%e3%81%8c200%e6%82%aa","status":"publish","type":"post","link":"http:\/\/kiyonagi.jp\/?p=795","title":{"rendered":"SQLAlchemy\u3067\u5b9f\u884c\u3055\u308c\u3066\u3044\u308bSQL\u3092\u53d6\u5f97\u3059\u308b\u3002"},"content":{"rendered":"\n<p>SQLAlchemy\u3092\u4f7f\u3063\u3066\u308b\u3093\u3060\u304c\u3001\u6df1\u523b\u306a\u6027\u80fd\u52a3\u5316\u3092\u767a\u751f\u3055\u305b\u3066\u3057\u307e\u3063\u305f\u3002\uff08\u500b\u4eba\u7684\u306b\u904b\u7528\u3057\u3066\u308b\u30b7\u30b9\u30c6\u30e0\u306a\u306e\u3067\u3001\u52e4\u3081\u3066\u308b\u4f1a\u793e\u3068\u305d\u306e\u53d6\u5f15\u5148\u306b\u306f\u4f55\u3089\u5f71\u97ff\u306a\u3044\u3067\u3059\u3002\uff09<br><br>\u7d50\u679c\u7684\u306b\u3001\u6b21\u306e\u3068\u304a\u308a\u30af\u30a8\u30ea\u3092\u4fee\u6b63\u3057\u305f\u3002\u3042\u308a\u3048\u306a\u3044\u51e1\u30df\u30b9\u3060\u3063\u305f\u3002<br><br>\uff08\u4fee\u6b63\u524d\uff09<br><code>TableA.query.filter(TableA.customer_id==customerid, TableA.item_id==itemid, <span class=\"has-inline-color has-vivid-red-color\">TableB<\/span>.tenant_id==current_user.tenant_id).all()<\/code><br><code><br><\/code>\uff08\u4fee\u6b63\u5f8c\uff09<br><code>TableA.query.filter(TableA.customer_id==customerid, TableA.item_id==itemid, <span class=\"has-inline-color has-vivid-red-color\">TableA<\/span>.tenant_id==current_user.tenant_id).all()<\/code><br><br>\u3053\u306e\u5834\u5408\u306b\u3001\u3069\u3093\u306aSQL\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u306e\u304b\u3092\u8abf\u3079\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u305f\u3002<br><br><br>SQL\u3092\u6a19\u6e96\u51fa\u529b\u3059\u308b\u3088\u3046\u306b\u5909\u66f4\u3002<br><code>import logging<br>logging.basicConfig()<br>logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)<\/code><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u7d50\u679c\u306f\u6b21\u306e\u3068\u304a\u308a\u3002<br> \uff08\u4fee\u6b63\u524d\uff09 <br><code>SELECT hoge, foo, bar<br>FROM TableA<span class=\"has-inline-color has-vivid-red-color\">, TableB<\/span><br>WHERE TableA.customer_id = %(customer_id_1)s AND TableA.item_id = %(item_id_1)s AND TableA.youbi = %(youbi_1)s AND TableB.tenant_id = %(tenant_id_1)s<\/code><\/p>\n\n\n\n<p>\uff08\u4fee\u6b63\u5f8c\uff09<br><code>SELECT hoge, foo, bar<br>FROM TableA<br>WHERE TableA.customer_id = %(customer_id_1)s AND TableA.item_id = %(item_id_1)s AND TableA.youbi = %(youbi_1)s AND TableA.tenant_id = %(tenant_id_1)s<\/code><\/p>\n\n\n\n<p><br>from\u53e5\u306b\u4e26\u3079\u3089\u308c\u3001\u7d50\u5408\u306a\u3057\u306eSQL\u304c\u5b9f\u884c\u3055\u308c\u308b\u3088\u3046\u3060\u3002<br>\u660e\u793a\u7684\u306a join\u30e1\u30bd\u30c3\u30c9\u306e\u306a\u3044 \u3053\u3046\u3044\u3046\u66f8\u304d\u65b9\u306f\u3001\u5b9f\u884c\u6642\u30a8\u30e9\u30fc\u3067\u3044\u3044\u3093\u3058\u3083\u306a\u3044\u304b\u3068\u601d\u3046\u3002<br><br>\u4eca\u56de\u3053\u306e\u30af\u30a8\u30ea\u306e\u5f79\u5272\u306f\u3001TableA\u306e\u7d50\u679c\u30bb\u30c3\u30c8\u306e\u6709\u7121\u306e\u307f\u3092\u5fc5\u8981\u3068\u3059\u308b\u3082\u306e\u3060\u3063\u305f\u305f\u3081\u3001TableA\u306b\u30ec\u30b3\u30fc\u30c9\u304c\u306a\u3051\u308c\u3070TableB\u306b\u3042\u3063\u3066\u3082\u7d50\u679c\u306a\u3057 \u306a\u306e\u3067\u3053\u308c\u307e\u3067\u554f\u984c\u3068\u306a\u3089\u306a\u304b\u3063\u305f\u3002<br><br>\u3068\u306f\u3044\u3048\u3001TableB\u3060\u3051\u3067\u7d0480\u4e07\u4ef6\u306e\u30ec\u30b3\u30fc\u30c9\u304c\u3042\u3063\u305f\u306e\u306b\u3001\u3053\u308c\u307e\u3067\u4f53\u611f\u3067\u304d\u308b\u307b\u3069\u306e\u9045\u3055\u306f\u306a\u304f\u3001\u4eca\u56de\u500d\u306e160\u4e07\u4ef6\u306b\u306a\u3063\u305f\u3068\u3053\u308d\u3067\u9855\u8457\u306a\u9045\u3055\u304c\u3042\u3063\u305f\u306e\u3067\u3001DB\u5074\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3057\u304b\u982d\u306b\u306a\u304f\u3001\u89e3\u6c7a\u307e\u3067\u3080\u3061\u3083\u304f\u3061\u3083\u6642\u9593\u3092\u8981\u3057\u305f\u3002<br>\u3060\u304b\u3089\u3068\u3044\u3063\u3066\u3001OR\u30de\u30c3\u30d1\u30fc\u306f\u300c\u3069\u3093\u306aSQL\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u304b\u308f\u304b\u3089\u306a\u3044\u304b\u3089\u30c0\u30e1\u300d\u3068\u3059\u308b\u306e\u306f\u5371\u967a\u601d\u60f3\u3060\u3068\u601d\u3046\u3057\u3001\u8a2d\u8a08\u304c\u7f8e\u3057\u3051\u308c\u3070\u56f0\u3089\u306a\u3044\u3068\u601d\u3046\u3088\u306d\u3002\u8907\u96d1\u306a\u30c7\u30fc\u30bf\u96c6\u8a08\u3092\u3059\u308b\u5e33\u7968\u3068\u304b\u306f\u5225\u3068\u3057\u3066\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQLAlchemy\u3092\u4f7f\u3063\u3066\u308b\u3093\u3060\u304c\u3001\u6df1\u523b\u306a\u6027\u80fd\u52a3\u5316\u3092\u767a\u751f\u3055\u305b\u3066\u3057\u307e\u3063\u305f\u3002\uff08\u500b\u4eba\u7684\u306b\u904b\u7528\u3057\u3066\u308b\u30b7\u30b9\u30c6\u30e0\u306a\u306e\u3067\u3001\u52e4\u3081\u3066\u308b\u4f1a\u793e\u3068\u305d\u306e\u53d6\u5f15\u5148\u306b\u306f\u4f55\u3089\u5f71\u97ff\u306a\u3044\u3067\u3059\u3002\uff09 \u7d50\u679c\u7684\u306b\u3001\u6b21\u306e\u3068\u304a\u308a\u30af\u30a8\u30ea\u3092\u4fee\u6b63\u3057\u305f\u3002\u3042\u308a\u3048\u306a\u3044\u51e1\u30df\u30b9\u3060\u3063\u305f&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11,4],"tags":[],"class_list":["post-795","post","type-post","status-publish","format-standard","hentry","category-tech","category-4"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=\/wp\/v2\/posts\/795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=795"}],"version-history":[{"count":4,"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=\/wp\/v2\/posts\/795\/revisions"}],"predecessor-version":[{"id":800,"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=\/wp\/v2\/posts\/795\/revisions\/800"}],"wp:attachment":[{"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=795"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kiyonagi.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}