Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hbrdU-0007vJ-Re for psycopg@arkaria.postgresql.org; Fri, 14 Jun 2019 19:13:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hbrdT-0005aR-NP for psycopg@arkaria.postgresql.org; Fri, 14 Jun 2019 19:13:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hbrdT-0005Yx-7I for psycopg@lists.postgresql.org; Fri, 14 Jun 2019 19:13:15 +0000 Received: from mail-lj1-x243.google.com ([2a00:1450:4864:20::243]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hbrdM-0007VP-Ag for psycopg@postgresql.org; Fri, 14 Jun 2019 19:13:14 +0000 Received: by mail-lj1-x243.google.com with SMTP id i21so3476036ljj.3 for ; Fri, 14 Jun 2019 12:13:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=wSbsWz2obPORhq46bmkgMTOmyXJ8HcIgmlJ1x0l9Rxo=; b=ThzAsDf2q80lFEbQZGq0Gh6d5s0o1n4BMu5flmG9Xf+QLjCPzd/klmWjn+1TQok4Qh aMgw2Rn9d0m1inzVBfYxUqBkxEW2EXMHNj1kH9nBTSSyM8TqjLRHTztCFQF0nwMWaVr5 obfDZPhhIkCXvgrSHDHVAx6XYx/w5DVgUBXVo8z1RMDxJzAOw6/4j0FOrJkbOooaJXmO ziXahKWyYsfnpiC1FSvnBkEi483nCliua/L2VRV5R3R5wWThahhY8OhUC40usdw7cfX0 gNSir8yX5hy+MrlJ4MK4mrUTY1K0KueS4WClyWnpYzykFk1pi9FRigMFkKc2vfEHLne9 gEIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wSbsWz2obPORhq46bmkgMTOmyXJ8HcIgmlJ1x0l9Rxo=; b=QLgHj3N+tIYcx+9bresWUtKE9W2ttuUTT9S+WoOGlkmlWNiL6a9aXAp9fJdy7fwpIJ KJcsMBo2giujC788V5R7jbqzKsxIj7reb3upfdDhLvBRsHFz62NpIiLyD81pkaeP5eHc 0NBWXHWJMEYNBLTQv0ydVI55vHoMdhtFCFEwDXfagH09CgtLHuG3jVoA2ll5L2MCQuZ7 qgIcqF+QjTDEWCa0NbV9dNp01wXDF7Kd3sUIggG5+oT/RTy6+yUuNW6R0v1dWCBGNLO1 MAVd/TGgYPmiPppx446MmhGpGcOmXCgSM08zmtUxUxoSDF9008WzC9Ixb77bSE8JCViG aN0g== X-Gm-Message-State: APjAAAX8nGvgmZEFQsUvM1BKSmS5bH1VDoCRbWQUDHu2lMIcChT18eJR UQ/uR/OUfD/Bn0j0NHA37oTVVUgTTGCKTJquoQg= X-Google-Smtp-Source: APXvYqyCpx0LxurKvQTu9RcdoKknyZi6UqYqk5ecdiAWKxt5kikf/sHFtBgKfnkPlXJrY0agWk5p0O4tsnzPe8P1mlc= X-Received: by 2002:a2e:6545:: with SMTP id z66mr52640668ljb.146.1560539585912; Fri, 14 Jun 2019 12:13:05 -0700 (PDT) MIME-Version: 1.0 References: <33071EF2-86DE-4698-BFAA-6F084024A826@thebuild.com> <575FDD0B-5C9C-42D5-BAF5-FA898E6A9B3B@enterprisedb.com> In-Reply-To: <575FDD0B-5C9C-42D5-BAF5-FA898E6A9B3B@enterprisedb.com> From: Daniele Varrazzo Date: Fri, 14 Jun 2019 20:12:54 +0100 Message-ID: Subject: Re: Creating dynamically-typed tables using psycopg2's built-in formatting To: Sebastiaan Mannem Cc: Daniel Cohen , Christophe Pettus , psycopg@postgresql.org Content-Type: multipart/related; boundary="000000000000ad5a77058b4d6f1a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000ad5a77058b4d6f1a Content-Type: multipart/alternative; boundary="000000000000ad5a75058b4d6f19" --000000000000ad5a75058b4d6f19 Content-Type: text/plain; charset="UTF-8" On Fri, Jun 14, 2019 at 6:44 PM Sebastiaan Mannem < sebastiaan.mannem@enterprisedb.com> wrote: > Yeah, > "schema.tbl" will search all schemas in search path for a table explicitly > called "schema.tbl". > So that will never find a table called "tbl", and most probably never find > a table at all. > Also note that from psycopg 2.8 you can use Identifier("schema", "tbl") to represent a dot-separated sequence of identifiers. http://initd.org/psycopg/docs/sql.html#psycopg2.sql.Identifier -- Daniele --000000000000ad5a75058b4d6f19 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Jun 14, 2019 at 6:44 PM Sebastiaa= n Mannem <sebastia= an.mannem@enterprisedb.com> wrote:
Yeah,
"schema.tbl" will search all schema= s in search path for a table explicitly called "schema.tbl".
So that will never find a table called "tbl", and most prob= ably never find a table at all.

Also note that from psycopg 2.8 you can use Identifier("schema",= "tbl") to represent a dot-separated sequence of identifiers.


-- Daniele
--000000000000ad5a75058b4d6f19-- --000000000000ad5a77058b4d6f1a Content-Type: image/png; name="email_logo.png" Content-Disposition: inline; filename="email_logo.png" Content-Transfer-Encoding: base64 Content-ID: <16b57660e1e3390c8a91> X-Attachment-Id: 16b57660e1e3390c8a91 iVBORw0KGgoAAAANSUhEUgAAAM4AAAB4CAMAAACNUj2eAAABjFBMVEUAAAAiHh8iHh8iHh/tcyQi Hh8jHyAiHh8jHyAiHh8iHh/tcyTtcyQiHh8iHh8iHh/qWiQiHh/tcyQiHh/oTCQiHh8jHyAiHh8i Hh/tcyQiHh8iHh8jHyAiHh/oTCQiHh8iHh8iHh/tcyQiHh8iHh8iHh8iHh/6oh0iHh/6oh0iHh8i Hh8iHh/tcyQiHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8iHh8i Hh/oTCQiHh8iHh/tcyQiHh/oTCTqXSTtcyTtcyToSyQiHh/tcyTtcyTtcyQiHh/tcyQiHh/tcyTt cyQiHh/ygyHtcyT5nB3tcyTrayXtcyTtbyTtcyTtcyTtcyT8qhzxfyLueSTtcyTtcyTrYCTtcyT6 oR3ueiTqXiT6ox37phz6oh3rYiTtcyQiHh/tcyQjHyDoTCT6oh3oSCTtdCTueSTueiTnRSTraSXo SiTudiT9qxzsbST8pxzqWiTpUyTrZiTnQiTrYST2kx/vfCP0iiDsgXbkAAAAbHRSTlMAwvPG4L2B H6Eb+/TI7QUMCLWU2sXpUXBOEc+W4nTr1FwuUCgI3ofy5uCnkD42FMtKYUQx+fbwsZpUOhCMNSPk fGUyGAMBol42q52EA2vknmLreP2O/fvj18fAshjy4sVxWCgd8uvr4ODUxUckF7dGAAALR0lEQVR4 2uzaW28SQRTA8UMrVarihWBrFdHQYpUKpSJSbStYTdR4idbGS6IPaqIms126y213oRf84i5eOLLM 7CKHWfvg/5mS/JiZs7NJ4X8Hu6/ly4I+vXu3cVSQ8vwsdDrFxlzLR+dmgs+K2YUTwO8hGxu0aCTw LLbY90WlaHT55jg8jEOnK2VRltWuKaKO/uQE2IDl4oWL6xzOKfaXTQZLDlEyBUfmpoNBd45h6aih cLDxWIjMscut3AbAVlYgWcgXU64co9xADZWDBRYJHCwGWCoJhaXcrQJy+BqNwBF3Pkvm2M2k4Xeh 9XAivBZOuHAsCzUEDr/oGTqHTa4Cryt8jY4aAkdUZo3KsVsalGMZbdRQOOJidE4uMSDH2MApIInD AieoHBYJD8Qx9lEjjcPy16kclhqEY2yapiaPgy1SOey6N8cqa6iRymHLVM5DFw4eHNTI5bBpuMlI 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 --000000000000ad5a77058b4d6f1a Content-Type: image/png; name="social_rss.png" Content-Disposition: inline; filename="social_rss.png" Content-Transfer-Encoding: base64 Content-ID: <16b57660e1eef62ddbb2> X-Attachment-Id: 16b57660e1eef62ddbb2 iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAclBMVEUAAACZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkjQ/XgAAAAJXRSTlMAxzLT znDZmU8uDAb2h1km5MG8nYHeppVrPTgc67avjmUfdkcV64HybwAAAT1JREFUOMvNlNlygzAMRW1s syXsOyQsTfr/v9gi2dgN4Oat1ZPwnNFyrwby+Vb8f4xR/gbGHBIu/VxkzIpRIqObqA27EBWXNj+f DQgFCnqGOcSMxEuPsXtUtn6gQeFadCvaRHE+t8lLS1Wyo1YXuAglx+1m1Y7s6+4wT0wj3Tr7co/0 FVvlffpKBzdGzjuR1ymuyGG9ge6rYcQVLoLztemZWQ4uOOK++U+s7IfNKeQ+4GOuXgRh4xzKehV8 Y9tsr1v2kPPBHhHk0YG8N4FcAeUCKM0OXLjiRAEsKGRXEyv6ofe+ORSsAdNApcnEaqU6hT0e+lZj EwuwmWoVgvwxvO1dCNc7hqzehnuaWILKrnZCWmpJqHlIWqRum6iBx7uBXZuFLI2WFapljr4SoqSt bjJzGXMx43me8z//v/0aXzuZl1nmXwxyAAAAAElFTkSuQmCC --000000000000ad5a77058b4d6f1a Content-Type: image/png; name="social_fb.png" Content-Disposition: inline; filename="social_fb.png" Content-Transfer-Encoding: base64 Content-ID: <16b57660e1e975a0b093> X-Attachment-Id: 16b57660e1e975a0b093 iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAP1BMVEUAAACZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVMmLXAAAAFHRS TlMABcTOskfU4rhuCcq9xxrpl1EwKuWD16QAAACDSURBVDjL7dJLCoQwFETRp8/8bfuX/a+1E4rG iYkFTkS8w3AgpIhkqtMxqykl1S5z3kSpRd9hLsi/CayhGDYJxd4UcwvE15TmJlOo8OzvNoKNmWGD 5VjeYQ+CUZf6OJQErvYBa++PFo4ZjgWOvTjmN5nV0oyHas0en/dml2P4IXE9+AHaoldJNe6LmQAA AABJRU5ErkJggg== --000000000000ad5a77058b4d6f1a Content-Type: image/png; name="social_tw.png" Content-Disposition: inline; filename="social_tw.png" Content-Transfer-Encoding: base64 Content-ID: <16b57660e1eb065d1504> X-Attachment-Id: 16b57660e1eb065d1504 iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAVFBMVEUAAACZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZlKXBdvAAAAG3RSTlMA0822IWCcmI9RAsnDo3VtB4d9QCwNqy8aErE4fuH6AAAA 00lEQVQ4y+XU2w6DIAwG4BZBxRPoPK7v/56LMcqp2bw02X8JX2hpAkC38vcM60b8ZFiMAJXOMGbv l/CUhiOdhpD1sDg3wJUxZApAnjXqyjFpA2b2NXMcWICX4mJuaxv2E3tP5RgwMZ1VVGk8JqKB5MCl qkOmJsmxlUJWAptXxJqKZQPd6i2LGbZMcyPGjHI9JSynhLXMBTBl2DGdpYyw3EJVYsgc9MfSIXEM G2M91SMxTOkFvMgWiWPWR9YVTMar5GFWVYhvDxDrbJ6zBp/+OTyCfQC6a221+gzxOQAAAABJRU5E rkJggg== --000000000000ad5a77058b4d6f1a Content-Type: image/png; name="social_li.png" Content-Disposition: inline; filename="social_li.png" Content-Transfer-Encoding: base64 Content-ID: <16b57660e1ea1f9c34a5> X-Attachment-Id: 16b57660e1ea1f9c34a5 iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAZlBMVEUAAACZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlLhKZbAAAAIXRSTlMAiwUMb8nfettC072fJpVi VjdmU9WxqImCaF1PRB52ai6SAduzAAAAx0lEQVQ4y9XU7Q6CIBSAYRI9gqD5/W117v8mG5zazEX4 oy17f8l8xsZhg+GuDs/EsPBbBh4mCmbKPKxhttTDNLHAwxSx2cMgNIorD0Noy7xPvj5ekZhqRIj0 KWvEK0uZSSOGNBlQNEkew5oxW4c40F/NnhVixQJmOpndtuXgY5T6xIopZVTpZlwBQkffCzhZa2f+ 2K92MjpeSYvIxTja4mOx6z52/iET7xmte8RxfQuXLQurKs8rhZhJKWc5EtPSNCV/8b75uwNxmH39 uzGL4AAAAABJRU5ErkJggg== --000000000000ad5a77058b4d6f1a Content-Type: image/png; name="social_gp.png" Content-Disposition: inline; filename="social_gp.png" Content-Transfer-Encoding: base64 Content-ID: <16b57660e1e99d42cb66> X-Attachment-Id: 16b57660e1e99d42cb66 iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAWlBMVEUAAACZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ mZmZmZmZmZmZmZmZmZmZmZmb09q6AAAAHXRSTlMAxL2kNZVxt7F8HQ2dhS4FrZmLZlJMCHhpGD0V YKAJsOgAAAEGSURBVDjL7ZPbcoQgDEAJFwFFvK+6Lf//mw032elIp4+dzp4Xk/EQSETifsVbq2sw 7cehGfyo0eVBAm0PVQ1MRy7sWNFAkFdERRuJp1uXheOzh3sNrLcW8KHadO1sYcv95u16tqJoT7Se xSq0eIJLAz+KKbVMkbiCUomapjRpkiDUIWYIw3t0AxY5SKRjUVM+hnjITOPclmNTqg3ftN25zxyn ajCEGGHWcs59OuMmjJ1YljGZOvUzXa9O4QPTMXc6l4H0BJkgWQ0mZ0xs0fJ6MkO0YgcBqZQsmpuI h2sjmjbMgN58rFyiYGr3Tb9aAiqaA8aztKnKRYri2Gycr1rCH/xP/7n2BcjqgW2wcIPCAAAAAElF TkSuQmCC --000000000000ad5a77058b4d6f1a--