@freshxuwu

Как подставить название таблицы как значение?

Имею такой запрос
async def create_table(self, table: str):
        sql = """
        CREATE TABLE IF NOT EXISTS $1 (
        id VARCHAR(255) NOT NULL,
        PRIMARY KEY(id);
        """
        await self.pool.execute(sql, table)

Он должен создавать таблицу с названием которое передается в функцию.
Но выдает ошибку asyncpg.exceptions.PostgresSyntaxError: ошибка синтаксиса (примерное положение: "$1").
Что мне нужно сделать чтобы подставлять название таблицы из параметров функции.
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
@zexer
async def create_table(self, table: str):
        sql = f"""
        CREATE TABLE IF NOT EXISTS {table} (
        id VARCHAR(255) NOT NULL,
        PRIMARY KEY(id);
        """
        await self.pool.execute(sql, table)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bacon
Имя таблицы нельзя подставить через параметры, аналогично данным. У pscyopg2 было что-то специальное на этот счет, а что есть у asyncpg, не знаю. Так что придется вставлять через python, главное не забывать о возможности sql injection.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы