pandas.read_sql#

pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None, dtype_backend=, dtype=None)[источник]#

Чтение SQL-запроса или таблицы базы данных в DataFrame.

Эта функция является удобной оболочкой вокруг read_sql_table и read_sql_query (для обратной совместимости). Он будет делегировать к конкретной функции в зависимости от предоставленных входных данных. SQL-запрос будет направлен в read_sql_query, тогда как имя таблицы базы данных будет направлено в read_sql_table. Обратите внимание, что делегированная функция может иметь более конкретные примечания о своей функциональности, не перечисленные здесь.

Параметры:
sqlstr или SQLAlchemy Selectable (объект select или text)

SQL-запрос для выполнения или имя таблицы.

conADBC Connection, SQLAlchemy connectable, str или sqlite3 connection

ADBC обеспечивает высокопроизводительный ввод-вывод с поддержкой нативных типов, где это возможно. Использование SQLAlchemy позволяет использовать любую БД, поддерживаемую этой библиотекой. Если объект DBAPI2, поддерживается только sqlite3. Пользователь отвечает за освобождение ресурсов движка и закрытие соединения для соединения ADBC и подключаемого объекта SQLAlchemy; строковые соединения закрываются автоматически. См. здесь.

index_colstr или список str, опционально, по умолчанию: None

Столбец(ы) для установки в качестве индекса (MultiIndex).

coerce_floatbool, по умолчанию True

Пытается преобразовать значения нестроковых, нечисловых объектов (как decimal.Decimal) в числа с плавающей точкой, полезно для наборов результатов SQL.

paramsсписок, кортеж или словарь, необязательно, по умолчанию: None

Список параметров для передачи методу execute. Синтаксис, используемый для передачи параметров, зависит от драйвера базы данных. Проверьте документацию вашего драйвера базы данных, чтобы узнать, какой из пяти стилей синтаксиса, описанных в paramstyle PEP 249, поддерживается. Например, для psycopg2 используется %(name)s, поэтому используйте params={'name': 'value'}.

parse_datesсписок или словарь, по умолчанию: None
  • Список имён столбцов для парсинга как даты.

  • Словарь {column_name: format string} где строка формата совместима с strftime в случае разбора строкового времени или является одной из (D, s, ns, ms, us) в случае разбора целочисленных временных меток.

  • Словарь {column_name: arg dict}, где словарь arg соответствует ключевым аргументам pandas.to_datetime() Особенно полезно с базами данных без нативной поддержки Datetime, такими как SQLite.

столбцысписок, по умолчанию: None

Список имен столбцов для выбора из таблицы SQL (используется только при чтении таблицы).

chunksizeint, по умолчанию None

Если указано, вернуть итератор, где chunksize это количество строк для включения в каждый фрагмент.

dtype_backend{'numpy_nullable', 'pyarrow'}, по умолчанию 'numpy_nullable'

Тип данных бэкенда, примененный к результирующему DataFrame (все еще экспериментальная). Поведение следующее:

  • "numpy_nullable": возвращает поддерживаемый нуллифицируемым типом данных DataFrame (по умолчанию).

  • "pyarrow": возвращает nullable на основе pyarrow ArrowDtype DataFrame.

Добавлено в версии 2.0.

dtypeИмя типа или словарь столбцов

Тип данных для данных или столбцов. Например, np.float64 или {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’}. Аргумент игнорируется, если вместо запроса передается таблица.

Добавлено в версии 2.0.0.

Возвращает:
DataFrame или Iterator[DataFrame]

Смотрите также

read_sql_table

Прочитать таблицу базы данных SQL в DataFrame.

read_sql_query

Прочитать SQL-запрос в DataFrame.

Примеры

Чтение данных из SQL через SQL-запрос или имя таблицы SQL. При использовании базы данных SQLite принимаются только SQL-запросы, предоставление только имени таблицы SQL приведет к ошибке.

>>> from sqlite3 import connect
>>> conn = connect(':memory:')
>>> df = pd.DataFrame(data=[[0, '10/11/12'], [1, '12/11/10']],
...                   columns=['int_column', 'date_column'])
>>> df.to_sql(name='test_data', con=conn)
2
>>> pd.read_sql('SELECT int_column, date_column FROM test_data', conn)
   int_column date_column
0           0    10/11/12
1           1    12/11/10
>>> pd.read_sql('test_data', 'postgres:///db_name')  

Применить разбор дат к столбцам через parse_dates аргумент parse_dates вызовы аргументов pd.to_datetime на предоставленных столбцах. Пользовательские значения аргументов для применения pd.to_datetime в столбце задаются через словарный формат:

>>> pd.read_sql('SELECT int_column, date_column FROM test_data',
...             conn,
...             parse_dates={"date_column": {"format": "%d/%m/%y"}})
   int_column date_column
0           0  2012-11-10
1           1  2010-11-12

Добавлено в версии 2.2.0: pandas теперь поддерживает чтение через драйверы ADBC

>>> from adbc_driver_postgresql import dbapi  
>>> with dbapi.connect('postgres:///db_name') as conn:  
...     pd.read_sql('SELECT int_column FROM test_data', conn)
   int_column
0           0
1           1