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 на основе pyarrowArrowDtypeDataFrame.
Добавлено в версии 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