コード例 #1
0
 def test_eq(self):
     assert sql.Placeholder("foo") == sql.Placeholder("foo")
     assert sql.Placeholder("foo") != sql.Placeholder("bar")
     assert sql.Placeholder("foo") != "foo"
     assert sql.Placeholder() == sql.Placeholder()
     assert sql.Placeholder("foo") != sql.Placeholder()
     assert sql.Placeholder("foo") != sql.Literal("foo")
コード例 #2
0
 def insert_stmt(self):
     phs = [
         sql.Placeholder(format=self.format)
         for i in range(len(self.schema))
     ]
     return sql.SQL("insert into {} ({}) values ({})").format(
         self.table_name,
         sql.SQL(", ").join(self.fields_names),
         sql.SQL(", ").join(phs),
     )
コード例 #3
0
ファイル: db.py プロジェクト: stac-utils/pgstac
 def func(self, function_name: str, *args: Any) -> Generator:
     """Call a database function."""
     placeholders = sql.SQL(", ").join(sql.Placeholder() * len(args))
     func = sql.Identifier(function_name)
     cleaned_args = []
     for arg in args:
         if isinstance(arg, dict):
             cleaned_args.append(psycopg.types.json.Jsonb(arg))
         else:
             cleaned_args.append(arg)
     base_query = sql.SQL("SELECT * FROM {}({});").format(func, placeholders)
     return self.query(base_query, cleaned_args)
コード例 #4
0
ファイル: test_datetime.py プロジェクト: dlax/psycopg3
    def test_dump_date(self, conn, val, expr, fmt_in):
        val = as_date(val)
        cur = conn.cursor()
        cur.execute(f"select '{expr}'::date = %{fmt_in}", (val, ))
        assert cur.fetchone()[0] is True

        cur.execute(
            sql.SQL("select {}::date = {}").format(
                sql.Literal(val), sql.Placeholder(format=fmt_in)),
            (val, ),
        )
        assert cur.fetchone()[0] is True
コード例 #5
0
    def test_executemany(self, conn):
        cur = conn.cursor()
        cur.execute("""
            create table test_compose (
                id serial primary key,
                foo text, bar text, "ba'z" text)
            """)
        cur.executemany(
            sql.SQL("insert into {0} (id, {1}) values (%s, {2})").format(
                sql.Identifier("test_compose"),
                sql.SQL(", ").join(map(sql.Identifier,
                                       ["foo", "bar", "ba'z"])),
                (sql.Placeholder() * 3).join(", "),
            ),
            [(10, "a", "b", "c"), (20, "d", "e", "f")],
        )

        cur.execute("select * from test_compose")
        assert cur.fetchall() == [(10, "a", "b", "c"), (20, "d", "e", "f")]
コード例 #6
0
 def _insert_field_stmt(self, i):
     ph = sql.Placeholder(format=self.format)
     return sql.SQL("insert into {} ({}) values ({})").format(
         self.table_name, self.fields_names[i], ph
     )
コード例 #7
0
    def test_as_bytes(self, conn, format):
        ph = sql.Placeholder(format=format)
        assert ph.as_bytes(conn) == f"%{format}".encode("ascii")

        ph = sql.Placeholder(name="foo", format=format)
        assert ph.as_bytes(conn) == f"%(foo){format}".encode("ascii")
コード例 #8
0
    def test_as_string(self, conn, format):
        ph = sql.Placeholder(format=format)
        assert ph.as_string(conn) == f"%{format}"

        ph = sql.Placeholder(name="foo", format=format)
        assert ph.as_string(conn) == f"%(foo){format}"
コード例 #9
0
 def test_bad_name(self):
     with pytest.raises(ValueError):
         sql.Placeholder(")")
コード例 #10
0
 def test_repr_name_format(self, conn, format):
     ph = sql.Placeholder("foo", format=format)
     add = f", format={format.name}" if format != PyFormat.AUTO else ""
     assert str(ph) == repr(ph) == f"Placeholder('foo'{add})"
コード例 #11
0
ファイル: test_sql.py プロジェクト: psycopg/psycopg3
 def test_repr_name_binary(self, conn):
     ph = sql.Placeholder("foo", format=Format.BINARY)
     assert str(ph) == repr(ph) == "Placeholder('foo', format=BINARY)"
     assert ph.as_string(conn) == "%(foo)b"
コード例 #12
0
ファイル: test_sql.py プロジェクト: psycopg/psycopg3
 def test_repr_name(self, conn):
     ph = sql.Placeholder("foo")
     assert str(ph) == repr(ph) == "Placeholder('foo')"
     assert ph.as_string(conn) == "%(foo)s"
コード例 #13
0
ファイル: test_sql.py プロジェクト: psycopg/psycopg3
 def test_repr_binary(self, conn):
     ph = sql.Placeholder(format=Format.BINARY)
     assert str(ph) == repr(ph) == "Placeholder(format=BINARY)"
     assert ph.as_string(conn) == "%b"
コード例 #14
0
ファイル: test_sql.py プロジェクト: psycopg/psycopg3
 def test_repr(self, conn):
     ph = sql.Placeholder()
     assert str(ph) == repr(ph) == "Placeholder()"
     assert ph.as_string(conn) == "%s"