psycopg2 partial identifier

Viewed 61
_sql = sql.SQL("SELECT * FROM {prefix}_prefixed_table_name").format(prefix=sql.Identifier("prefix"))

_sql.as_string(conn)

Result SELECT * FROM "prefix"_prefixed_table_name

What I want SELECT * FROM prefix_prefixed_table_name or SELECT * FROM "prefix_prefixed_table_name"

How can I achieve this?

As a request from klin why wouldn't

_sql = sql.SQL("SELECT * FROM {prefix}_prefixed_table_name").format(prefix=sql.SQL("prefix"))

work, one may simply enter

"another_table_name; -- "

which would result in

SELECT * FROM another_table_name; -- _prefixed_table_name
1 Answers

Move the table name to Identifier():

_sql = sql.SQL("SELECT * FROM {name}").format(name=sql.Identifier(prefix+ "_prefixed_table_name"))
Related