«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как передать параметры с помощью Pandas read_sql?

Как передать параметры с помощью Pandas read_sql?

Опубликовано 8 ноября 2024 г.
Просматривать:479

How to Pass Parameters with Pandas read_sql?

Передача параметров с помощью Pandas read_sql

Обзор

Функция Pandas read_sql позволяет выполнять SQL-запросы и извлекать данные из базы данных. Одной из его особенностей является возможность передавать параметры в запрос.

Синтаксис параметров

Параметры можно передавать в виде списка, кортежа или словаря. Точный синтаксис зависит от используемого драйвера базы данных. Вот несколько распространенных примеров:

  • ? или %s: заполнитель для одного значения
  • :1 или :name: именованный заполнитель для одного значения
  • %(name)s: именованный заполнитель с использованием синтаксиса string.format

Использование словаря с именованными аргументами

Один из вариантов передачи параметров — использование словаря. Это поддерживается большинством драйверов, включая PostgreSQL с драйвером psycopg2. Пары ключ-значение в словаре соответствуют именованным заполнителям в запросе.

Пример

Чтобы продемонстрировать подход с использованием именованного аргумента, давайте рассмотрим следующий SQL-запрос:

select "Timestamp", "Value" from "MyTable"
where "Timestamp" BETWEEN :dstart AND :dfinish

Вот как можно передать параметры этому запросу с помощью словаря:

params = {"dstart": datetime(2014, 6, 24, 16, 0), "dfinish": datetime(2014, 6, 24, 17, 0)}

df = psql.read_sql(
    "select \"Timestamp\",\"Value\" from \"MyTable\" where \"Timestamp\" BETWEEN %(dstart)s AND %(dfinish)s",
    db,
    params=params,
    index_col=["Timestamp"],
)

В этом примере словарь параметров предоставляет значения для именованных заполнителей :dstart и :dfinish. Синтаксис %(name)s гарантирует правильную вставку значений в запрос.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3