Работа с базами данных в Python: SQL и NoSQL решения
Базы данных являются неотъемлемой частью любого веб-приложения, так как они обеспечивают хранение и доступ к данным. Важно знать, как работать с базами данных, используя язык программирования Python. В этой статье мы рассмотрим различные варианты работы с базами данных, в том числе решения SQL и NoSQL, и покажем практические примеры их использования.
SQL базы данных
SQL базы данных — это реляционные базы данных, которые используют язык структурированных запросов (Structured Query Language, SQL) для создания, управления и обработки данных. Они состоят из таблиц, где данные представлены в виде строк (записей) и столбцов (атрибутов). SQL позволяет выполнять разнообразные операции с данными, такие как выборка, вставка, обновление, удаление, а также более сложные операции, такие как объединение таблиц, группировка данных, фильтрация и сортировка. Некоторые из наиболее популярных SQL баз данных включают MySQL, PostgreSQL, Microsoft SQL Server, Oracle Database и SQLite.
Подключение к SQL базе данных
Python имеет библиотеку SQLite, которая позволяет работать с локальными SQL-базами данных без внешних зависимостей. Для подключения к удаленным SQL базам данных, таким как MySQL или PostgreSQL, можно использовать сторонние библиотеки, такие как mysql-connector-python та psycopg2 . Вот пример подключения к SQLite:
import sqlite3 connection = sqlite3.connect("my_database.db") cursor = connection.cursor() # Выполнение SQL запроса cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)") connection.commit() connection.close()
Выполнение операций CRUD
Основные операции с базой данных — Create, Read, Update и Delete (CRUD) можно выполнять при помощи SQL запросов. Для вставки данных используется команда INSERT INTO , для выборки — SELECT , для обновления — UPDATE , а для удаления — DELETE .
# Вставка данных cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("John", 25)) # Выборка данных cursor.execute("SELECT * FROM users") users = cursor.fetchall() # Обновление данных cursor.execute("UPDATE users SET age=? WHERE (26, 1)) # Удаление данных cursor.execute("DELETE FROM users WHERE (1,))
NoSQL базы данных
NoSQL базы данных — это нереляционные системы хранения данных, которые не используют стандартный SQL для обработки данных. Они более гибкие, быстрые, масштабируемые и способны работать с большими объемами неструктурированных данных. Это делает их популярным выбором для использования с языками программирования, такими как Python.
Работа с MongoDB
MongoDB — популярная NoSQL база данных, которая использует документо-ориентированный подход. Для работы с MongoDB в Python можно использовать библиотеку pymongo. Для начала работы необходимо установить pymongo и подключиться к серверу MongoDB:
pip install pymongo
from pymongo import MongoClient client = MongoClient("mongodb://localhost:27017/") db = client["my_database"] collection = db["users"]
Выполнение CRUD операций с MongoDB
Аналогично SQL-базам данных, в MongoDB можно выполнять CRUD операции. Вместо SQL запросов используются методы объекта collection .
# Вставка данных user = result = collection.insert_one(user) # Выборка данных users = collection.find() # Обновление данных collection.update_one(, >) # Удаление данных collection.delete_one()
Выбор между SQL и NoSQL базами данных
При выборе базы данных следует учитывать потребности вашего проекта. SQL базы данных подходят для структурированных данных и сильной консистентности, тогда как NoSQL базы данных часто используются для несортированных или полуструктурированных данных и обеспечивают горизонтальное масштабирование.
Выводы
В данной статье мы рассмотрели основные аспекты работы с базами данных в Python, включая SQL и NoSQL решения. Мы узнали, как подключаться к базам данных, выполнять операции CRUD и выбирать между разными типами баз данных. Использование баз данных является ключевым элементом разработки современных веб-приложений, поэтому знание этих аспектов поможет вам стать более эффективным разработчиком.
Шаг 3. Эксперимент, подразумевающий подключение к SQL с помощью pyodbc
В этом примере показано, как использовать pyodbc концепцию для подключения к базе данных SQL. В этом примере предполагается, что вы используете образец базы данных AdventureWorksLT.
Этот пример следует рассматривать только как подтверждение концепции. Код в этом примере упрощен для удобочитаемости и для него не гарантируется соблюдение рекомендаций корпорации Майкрософт.
Предварительные условия
- Python 3
- Если у вас еще нет Python, установите диспетчер пакетов Python и диспетчер пакетов Python (PyPI) из python.org.
- Предпочитаете не использовать собственную среду? Откройте в качестве devcontainer с помощью GitHub Codespaces.
- .
Подключение и запрос данных
Подключитесь к базе данных с помощью учетных данных.
- Создайте файл с именем app.py.
- Добавление документации по модулю.
""" Connects to a SQL database using pyodbc """import pyodbcSERVER = '' DATABASE = '' USERNAME = '' PASSWORD = ''connectionString = f'DRIVER=>;SERVER=;DATABASE=;UID=;PWD='conn = pyodbc.connect(connectionString)Выполнение запроса
Используйте строку SQL-запроса для выполнения запроса и анализа результатов.
-
Создайте переменную для строки запроса SQL.
SQL_QUERY = """ SELECT TOP 5 c.CustomerID, c.CompanyName, COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC; """cursor = conn.cursor() cursor.execute(SQL_QUERY)Заметка Эта функция фактически принимает любой запрос и возвращает результирующий набор, по которому может быть выполнена итерация с использованием cursor.fetchone().
records = cursor.fetchall() for r in records: print(f"\t\t")python app.py29485 1 Professional Sales and Service 29531 1 Remarkable Bike Store 29546 1 Bulk Discount Store 29568 1 Coalition Bike Company 29584 1 Futuristic BikesВставка строки в виде транзакции
В этом примере вы безопасно выполняете инструкцию INSERT и передаете параметры. Передача параметров в качестве значений защищает приложение от атак внедрения SQL.
-
Импорт randrange из библиотеки random .
from random import randrangeproductNumber = randrange(1000)Совет Создание случайного номера продукта здесь гарантирует, что этот пример можно запустить несколько раз.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """cursor.execute( SQL_STATEMENT, f'Example Product ', f'EXAMPLE-', 100, 200 )resultId = cursor.fetchval() print(f"Inserted Product ID : ") conn.commit()Совет При необходимости можно использовать connection.rollback для отката транзакции.
cursor.close() conn.close()python app.pyInserted Product ID : 1001Oracle Connection
Для подключения к База данных Oracle Вам, конечно, понадобится база данных, установленная на вашем компьютере. Моя машина имеет12сверсия, поэтому нет никаких гарантий, что все будет работать на старых или новых версиях. Чтобы проверить все, что я открыл знаменитыйHRСхема и установить парольчас,
Как только вы это сделаете, нажав насвязипокажет вам все детали, необходимые для подключения Python к вашему экземпляру базы данных Oracle:
Прежде чем переходить к коду, вам необходимо установитьcx_Oracleбиблиотека череззернышко, так:
pip install cx_oracle
Процесс подключения самый длинный из четырех, о которых я расскажу сегодня, но он действительно прост, если вы читаете его построчно. Я выбрал первые 10 строк знаменитогосотрудниковтаблица (обратите внимание, как Oracle используетROWNUM, вместо тогоВВЕРХ, илиПРЕДЕЛ):
import cx_Oracledsn = cx_Oracle.makedsn(
'localhost',
'1521',
service_name='orcl'
)
conn = cx_Oracle.connect(
user='hr',
password='hr',
dsn=dsn
)c = conn.cursor()
c.execute('SELECT * FROM employees WHERE ROWNUM conn.close()Выполнение этого блока кода приведет к выводу следующего в ваш Блокнот:

Это было не так сложно, правда? следующие будут проще или короче написать хотя бы обещаю!
SQL Server
Наряду с Oracle Database, SQL Server Microsoft также является довольно распространенной системой баз данных, которую можно увидеть в вашей обычной рабочей среде. Чтобы подключиться к нему, вам сначала нужно взятьимя сервера(выбранная строка):

Затем, когда вы подключитесь к ядру базы данных, вам нужно будет найти имя базы данных и имя таблицы, чтобы вы знали, что поместить в строку подключения:

О, почти забыл. Вам также необходимо установитьpyodbcбиблиотека череззернышко:
pip install pyodbc
Как и было обещано, код немного короче кода для подключения к Oracle:
import pyodbcconn = pyodbc.connect(
'Driver=;'
'Server=DESKTOP-TLF7IMQ\SQLEXPRESS;'
'Database=retail;'
'Trusted_Connection=yes;'
)cursor = conn.cursor()
cursor.execute('SELECT TOP 5 * FROM dbo.table_transactions')for row in cursor: print(row)
conn.close()Выполнение этой ячейки кода выведет следующее:

MySQL
Хотя, возможно, не так много в рабочих средах, как предыдущие два, MySQL все еще очень популярен, и вы, вероятно, использовали его раньше, например, если вы изучали веб-разработку.
По умолчанию экземпляр MySQL поставляется с этимSakilaбаза данных, которая выглядит действительно знакомой dvdrental база данных. Я установлю соединение сSakilaбаза данных иактерстол.

Мой Питон установлен через анаконда уже поставляется с необходимыми встроенными библиотеками, поэтому нет необходимости в дополнительных установках. Для подключения из Python я буду использоватьMySQLбиблиотека:
import mysql.connectorconn = mysql.connector.connect(
host='localhost',
user='root',
passwd='1234'
)cursor = conn.cursor()
cursor.execute('SELECT * FROM sakila.actor LIMIT 5')for row in cursor: print(row)
conn.close()Как только вы выполните этот блок кода, вы получите это в качестве вывода:

PostgreSQL
И последнее, но не менее важное База данных Postgres, Для подключения к нему вам нужно будет установитьpsycopg2библиотека:
pip install psycopg2
Странное имя, я знаю. Так легко сделать опечатку при импорте.
Тем не менее, процесс подключения довольно прост. Моя база данных содержит ранее упомянутыеdvdrentalбазу данных, поэтому я подключусь к ней еще раз к таблице актеров:
import psycopg2conn = psycopg2.connect(
user='postgres',
password='1234',
host='127.0.0.1',
port='5432',
database='dvdrental'
)cursor = conn.cursor()
cursor.execute('SELECT * FROM actor LIMIT 10')for row in cursor: print(row)
conn.close()Выполнение этого блока кода выведет следующее:

Вывод
И это в значительной степени завершает эту статью. Я видел 15-минутную статью о подключении только к одной базе данных, охватывающую все мелкие детали. Лично я не вижу в этом смысла, потому что, давай, это всего лишь соединение с базой данных! Есть много более важных вещей, чтобы сосредоточиться на.
Если вы специалист по данным, вы будете использовать базы данных в основном для извлечения информации, так что этой статьи вам достаточно. Для более продвинутых вещей, спросите своего лучшего друга, Google,
Соединитель Databricks SQL для Python
Databricks SQL Подключение or для Python — это библиотека Python, которая позволяет использовать код Python для выполнения команд SQL в кластерах Azure Databricks и хранилищах SQL Databricks. Соединитель Databricks SQL для Python проще в настройке и использовании, чем аналогичные библиотеки Python, такие как pyodbc. Эта библиотека соответствует PEP 249 — спецификации API баз данных Python версии 2.0.
Требования
- Компьютер разработки под управлением Python >=3.7 и
- Существующий кластер или хранилище SQL.
Начало работы
- Соберите следующие сведения о кластере или хранилище SQL, которое вы хотите использовать:
Кластер
- Имя узла сервера кластера. Его можно получить из значения Server Hostname (Имя узла сервера) на вкладке Advanced Options (Дополнительные параметры) > JDBC/ODBC для кластера.
- Путь HTTP кластера. Его можно получить из значения HTTP Path (Путь HTTP) на вкладке Advanced Options (Дополнительные параметры) > JDBC/ODBC для кластера.
- Допустимый маркер доступа. Вы можете использовать личный маркер доступа Azure Databricks для рабочей области. Вы также можете использовать маркер доступа к идентификатору Microsoft Entra.
Чтобы создать личный маркер доступа Azure Databricks, сделайте следующее:
- В рабочей области Azure Databricks щелкните имя пользователя Azure Databricks в верхней строке и выберите «Пользователь Параметры» в раскрывающемся списке.
- Щелкните «Разработчик«.
- Рядом с маркерами доступа нажмите кнопку «Управление«.
- Щелкните Generate new token (Создание нового маркера).
- (Необязательно) Введите комментарий, который поможет определить этот маркер в будущем и изменить время существования маркера по умолчанию в течение 90 дней. Чтобы создать маркер без времени существования (не рекомендуется), оставьте поле время существования (дни) пустым (пустым).
- Щелкните Создать.
- Скопируйте отображаемый маркер в безопасное расположение и нажмите кнопку «Готово«.
Не забудьте сохранить скопированный маркер в безопасном расположении. Не делитесь скопированным маркером с другими пользователями. Если вы потеряете скопированный маркер, вы не сможете повторно создать тот же маркер. Вместо этого необходимо повторить эту процедуру, чтобы создать новый маркер. Если вы потеряете скопированный маркер или считаете, что маркер скомпрометирован, Databricks настоятельно рекомендует немедленно удалить этот маркер из рабочей области, щелкнув значок корзины (отозвать) рядом с маркером на странице маркеров доступа.
Если вы не можете создавать или использовать маркеры в рабочей области, это может быть связано с тем, что администратор рабочей области отключил маркеры или не предоставил вам разрешение на создание или использование маркеров. Обратитесь к администратору рабочей области или следующему:
- Включение или отключение проверки подлинности личного маркера доступа для рабочей области
- Разрешения маркера личного доступа
Рекомендуется не задавать эту информацию в коде. Вместо этого следует извлекать эти сведения из безопасного расположения. Так, в примерах кода далее в этой статье используются переменные среды.
Хранилище SQL
- Имя узла сервера хранилища SQL. Его можно получить из значения Имя узла сервера на вкладке Сведения о подключении для хранилища SQL.
- Путь HTTP хранилища SQL. Его можно получить из значения Путь HTTP на вкладке Сведения о подключении для хранилища SQL.
- Допустимый маркер доступа. Вы можете использовать личный маркер доступа Azure Databricks для рабочей области. Вы также можете использовать маркер доступа к идентификатору Microsoft Entra.
Чтобы создать личный маркер доступа Azure Databricks, сделайте следующее:
- В рабочей области Azure Databricks щелкните имя пользователя Azure Databricks в верхней строке и выберите «Пользователь Параметры» в раскрывающемся списке.
- Щелкните «Разработчик«.
- Рядом с маркерами доступа нажмите кнопку «Управление«.
- Щелкните Generate new token (Создание нового маркера).
- (Необязательно) Введите комментарий, который поможет определить этот маркер в будущем и изменить время существования маркера по умолчанию в течение 90 дней. Чтобы создать маркер без времени существования (не рекомендуется), оставьте поле время существования (дни) пустым (пустым).
- Щелкните Создать.
- Скопируйте отображаемый маркер в безопасное расположение и нажмите кнопку «Готово«.
Не забудьте сохранить скопированный маркер в безопасном расположении. Не делитесь скопированным маркером с другими пользователями. Если вы потеряете скопированный маркер, вы не сможете повторно создать тот же маркер. Вместо этого необходимо повторить эту процедуру, чтобы создать новый маркер. Если вы потеряете скопированный маркер или считаете, что маркер скомпрометирован, Databricks настоятельно рекомендует немедленно удалить этот маркер из рабочей области, щелкнув значок корзины (отозвать) рядом с маркером на странице маркеров доступа.
Если вы не можете создавать или использовать маркеры в рабочей области, это может быть связано с тем, что администратор рабочей области отключил маркеры или не предоставил вам разрешение на создание или использование маркеров. Обратитесь к администратору рабочей области или следующему:
- Включение или отключение проверки подлинности личного маркера доступа для рабочей области
- Разрешения маркера личного доступа
Рекомендуется не задавать эту информацию в коде. Вместо этого следует извлекать эти сведения из безопасного расположения. Так, в примерах кода далее в этой статье используются переменные среды.
Примеры
В следующих примерах кода показано, как использовать соединитель Databricks SQL для Python для отправки запросов к данным и вставки данных, для отправки запросов к метаданным, для управления курсорами и соединениями и для настройки ведения журнала.
В этом примере кода значения переменных подключения server_hostname , http_path и access_token извлекаются из следующих переменных среды:
- DATABRICKS_SERVER_HOSTNAME , которая предоставляет значение Имени узла сервера в соответствии с требованиями.
- DATABRICKS_HTTP_PATH , которая предоставляет значение Пути HTTP в соответствии с требованиями.
- DATABRICKS_TOKEN , которая предоставляет маркер доступа в соответствии с требованиями.
Вы можете использовать другие подходы для получения значений этих переменных подключения. Переменные среды — лишь один из них.
- Запрос данных
- Вставка данных
- Метаданные запроса
- Управление курсорами и подключениями
- Настройка журнала
Запрос данных
В следующем примере кода показано, как вызвать соединитель SQL Databricks для Python для выполнения базовой команды SQL в кластере или хранилище SQL. Эта команда возвращает первые две строки из указанной таблицы diamonds .
Таблица diamonds включена в пример наборов данных.
from databricks import sql import os with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"), http_path = os.getenv("DATABRICKS_HTTP_PATH"), access_token = os.getenv("DATABRICKS_TOKEN")) as connection: with connection.cursor() as cursor: cursor.execute("SELECT * FROM default.diamonds LIMIT 2") result = cursor.fetchall() for row in result: print(row)Вставка данных
В следующем примере показано, как вставлять небольшие объемы данных (тысячи строк):
from databricks import sql import os with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"), http_path = os.getenv("DATABRICKS_HTTP_PATH"), access_token = os.getenv("DATABRICKS_TOKEN")) as connection: with connection.cursor() as cursor: cursor.execute("CREATE TABLE IF NOT EXISTS squares (x int, x_squared int)") squares = [(i, i * i) for i in range(100)] values = ",".join([f"(, )" for (x, y) in squares]) cursor.execute(f"INSERT INTO squares VALUES ") cursor.execute("SELECT * FROM squares LIMIT 10") result = cursor.fetchall() for row in result: print(row)Что касается больших объемов данных, сначала необходимо передать данные в облачное хранилище, а затем выполнить команду COPY INTO.
Метаданные запроса
Есть специальные методы для извлечения метаданных. В следующем примере в пример таблицы извлекаются метаданные о столбцах :
from databricks import sql import os with sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"), http_path = os.getenv("DATABRICKS_HTTP_PATH"), access_token = os.getenv("DATABRICKS_TOKEN")) as connection: with connection.cursor() as cursor: cursor.columns(schema_name="default", table_name="squares") print(cursor.fetchall())Управление курсорами и подключениями
Рекомендуется закрывать все подключения и курсоры, с которыми завершена работа. Это позволит освободить ресурсы в кластерах Azure Databricks и хранилищах SQL Databricks.
Вы можете применить диспетчер контекста (синтаксис with , используемый в предыдущих примерах) для управления ресурсами или явно вызвать close :
from databricks import sql import os connection = sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"), http_path = os.getenv("DATABRICKS_HTTP_PATH"), access_token = os.getenv("DATABRICKS_TOKEN")) cursor = connection.cursor() cursor.execute("SELECT * from range(10)") print(cursor.fetchall()) cursor.close() connection.close()Настройка журнала
Соединитель Databricks SQL использует стандартный модуль ведения журнала Python. Уровень ведения журнала можно настроить следующим образом:
from databricks import sql import os, logging logging.getLogger("databricks.sql").setLevel(logging.DEBUG) logging.basicConfig(filename = "results.log", level = logging.DEBUG) connection = sql.connect(server_hostname = os.getenv("DATABRICKS_SERVER_HOSTNAME"), http_path = os.getenv("DATABRICKS_HTTP_PATH"), access_token = os.getenv("DATABRICKS_TOKEN")) cursor = connection.cursor() cursor.execute("SELECT * from range(10)") result = cursor.fetchall() for row in result: logging.debug(row) cursor.close() connection.close()Справочник по API
Пакет
Использование: pip install databricks-sql-connector
См. также databricks-sql-connector в индексе пакета Python (PyPI).
Модуль
Использование: from databricks import sql
Методы
connect Метод
Устанавливает соединение с базой данных.
Имя узла сервера для кластера или хранилища SQL. Чтобы получить имя узла сервера, ознакомьтесь с инструкциями, приведенными выше в этой статье.
Этот параметр является обязательным.
Путь HTTP кластера или хранилища SQL. Чтобы получить путь HTTP, ознакомьтесь с инструкциями, приведенными выше в этой статье.
Этот параметр является обязательным.
Личный маркер доступа Azure Databricks или маркер идентификатора Microsoft Entra для рабочей области кластера или хранилища SQL. Чтобы создать маркер, ознакомьтесь с инструкциями, приведенными выше в этой статье.
Этот параметр является обязательным.
Тип: dict[str, Any]
Словарь параметров конфигурации сеанса Spark. Настройка конфигурации эквивалентна использованию команды SQL SET key=val . Выполните команду SQL SET -v , чтобы получить полный список доступных конфигураций.
По умолчанию — None .
Это необязательный параметр.
Тип: List[Tuple[str, str]]]
Дополнительные пары (ключ, значение), которые задаются в заголовках HTTP для каждого запроса RPC, выполненного клиентом. В обычном режиме использования дополнительные заголовки HTTP не задаются. По умолчанию — None .
Это необязательный параметр.
Исходный каталог для соединения. По умолчанию задано значение None . В этом случае используется каталог по умолчанию (обычно это hive_metastore ).
Это необязательный параметр.
Начальная схема для соединения. По умолчанию задано значение None . В этом случае используется схема по умолчанию default .
Это необязательный параметр.
True чтобы отправлять запросы на получение непосредственно в хранилище объектов облака, чтобы скачать блоки данных. False (по умолчанию) для отправки запросов непосредственно в Azure Databricks.
Если use_cloud_fetch задано True значение, но сетевой доступ заблокирован, запросы на получение завершаются ошибкой.
Классы
Класс Connection
Представляет подключение к базе данных.
Методы
Метод close
Закрывает соединение с базой данных и освобождает все связанные ресурсы на сервере. При любых дополнительных вызовах этого соединения создается Error .
Нет возвращаемого значения.
cursor Метод
Возвращает механизм, который обеспечивает обход записей в базе данных.
Класс Cursor
Атрибуты
Атрибут arraysize
Используется с методом fetchmany. Задает размер внутреннего буфера, который также определяет, сколько строк фактически извлекается с сервера за один раз. Значение по умолчанию — 10000 . Для сокращения результатов (чтобы каждая строка результатов не содержала большого объема данных) следует увеличить это значение с целью повышения производительности.
Доступ для чтения и записи.
Атрибут description
Содержит list Python объектов tuple . Каждый из этих объектов tuple содержит семь значений. При этом первые два элемента каждого объекта tuple содержат сведения, описывающие один столбец результатов, как показано ниже:
- name : имя столбца;
- type_code : строка, представляющая тип столбца. Например, целочисленный столбец будет иметь код типа int .
Оставшиеся пять элементов каждого объекта tuple с семью элементами не реализуются, и их значения не определяются. Как правило, они возвращаются как четыре значения None , за которыми следует одно значение True .
Доступ только для чтения.
Методы
cancel Метод
Прерывает выполнение любого запроса к базе данных или команды, запущенной курсором. Чтобы освободить связанные ресурсы на сервере, вызовите метод close после вызова метода cancel .
Нет возвращаемого значения.
Метод close
Закрывает курсор и освобождает связанные ресурсы на сервере. Закрытие уже закрытого курсора может вызвать ошибку.
Нет возвращаемого значения.
execute Метод
Подготавливает, а затем выполняет запрос к базе данных или соответствующую команду.
Нет возвращаемого значения.
Запрос или команда для подготовки и последующего выполнения.
Этот параметр является обязательным.
Пример без параметра parameters :
cursor.execute(
‘SELECT * FROM default.diamonds WHERE cut=»Ideal» LIMIT 2’
)Пример с параметром parameters :
Последовательность параметров для использования с параметром operation .
executemany Метод
Подготавливает, а затем выполняет запрос к базе данных или команду, используя все последовательности параметров в seq_of_parameters аргументе. Сохраняется только окончательный результирующий набор.
Нет возвращаемого значения.
Запрос или команда для подготовки и последующего выполнения.
Тип: list для dict .
Последовательность множества наборов значений параметров для использования с
параметром operation .catalogs Метод
Выполнение запроса метаданных о каталогах. Фактические результаты следует извлекать с помощью fetchmany или fetchall . К важным полям в результирующем наборе относятся:
- Имя поля: TABLE_CAT . Введите str . Имя каталога.
Нет возвращаемого значения.
Начиная с версии 1.0
schemas Метод
Выполнение запроса метаданных о схемах. Фактические результаты следует извлекать с помощью fetchmany или fetchall . К важным полям в результирующем наборе относятся:
- Имя поля: TABLE_SCHEM . Введите str . Имя схемы.
- Имя поля: TABLE_CATALOG . Введите str . Каталог, к которому относится схема.
Нет возвращаемого значения.
Начиная с версии 1.0
Имя каталога, о котором извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Имя схемы, о которой извлекаются сведения. Символ % интерпретируется как подстановочный знак.
tables Метод
Выполнение запроса метаданных о таблицах и представлениях. Фактические результаты следует извлекать с помощью fetchmany или fetchall . К важным полям в результирующем наборе относятся:
- Имя поля: TABLE_CAT . Введите str . Каталог, к которому относится таблица.
- Имя поля: TABLE_SCHEM . Введите str . Схема, к которой относится таблица.
- Имя поля: TABLE_NAME . Введите str . Название таблицы.
- Имя поля: TABLE_TYPE . Введите str . Тип отношения, например VIEW или TABLE (применяется в Databricks Runtime 10.2 и более поздних версий, а также в Databricks SQL; предыдущие версии Databricks Runtime возвращают пустую строку).
Нет возвращаемого значения.
Начиная с версии 1.0
Имя каталога, о котором извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Имя схемы, о которой извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Имя таблицы, о которой извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Список типов таблиц для сопоставления, например TABLE или VIEW .
columns Метод
Выполнение запроса метаданных о столбцах. Фактические результаты следует извлекать с помощью fetchmany или fetchall . К важным полям в результирующем наборе относятся:
- Имя поля: TABLE_CAT . Введите str . Каталог, к которому относится столбец.
- Имя поля: TABLE_SCHEM . Введите str . Схема, к которой относится столбец.
- Имя поля: TABLE_NAME . Введите str . Имя таблицы, к которой относится столбец.
- Имя поля: COLUMN_NAME . Введите str . Имя столбца.
Нет возвращаемого значения.
Начиная с версии 1.0
Имя каталога, о котором извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Имя схемы, о которой извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Имя таблицы, о которой извлекаются сведения. Символ % интерпретируется как подстановочный знак.
Имя столбца, о котором извлекаются сведения. Символ % интерпретируется как подстановочный знак.
fetchall Метод
Возвращает все (или все оставшиеся) строки запроса.
Возвращает все (или все оставшиеся) строки запроса в виде Python list объектов Row .
Создает Error , если предыдущий вызов метода execute не возвратил никаких данных или вызов execute еще не выполнялся
fetchmany Метод
Возвращает следующие строки запроса.
Возвращает данные следующих строк запроса до size (или атрибута arraysize, если значение size не указано) в виде Python list объектов Row . Если строк для извлечения меньше, чем определено size , будут возвращены все оставшиеся строки.
Создает Error , если предыдущий вызов метода execute не возвратил никаких данных или вызов execute еще не выполнялся
Число следующих строк для получения.
Это необязательный параметр. Если значение не указано, используется значение атрибута arraysize .
fetchone Метод
Возвращает следующую строку набора данных.
Возвращает следующую строку набора данных в виде одной последовательности как объект Python tuple или возвращает None , если больше нет доступных данных.
Создает Error , если предыдущий вызов метода execute не возвратил никаких данных или вызов execute еще не выполнялся
fetchall_arrow Метод
Возвращает все (или все оставшиеся) строки запроса в виде объекта PyArrow Table . Для запросов, возвращающих очень большие объемы данных, вместо него следует использовать fetchmany_arrow , чтобы уменьшить потребление памяти.
Возвращает все (или все оставшиеся) строки запроса в виде таблицы PyArrow.
Создает Error , если предыдущий вызов метода execute не возвратил никаких данных или вызов execute еще не выполнялся
Начиная с версии 2.0
fetchmany_arrow Метод
Возвращает следующие строки запроса в виде объекта PyArrow Table .
Возвращает данные следующих строк запроса до size (или атрибута arraysize, если значение size не указано) в виде объекта Python PyArrow Table .
Создает Error , если предыдущий вызов метода execute не возвратил никаких данных или вызов execute еще не выполнялся
Начиная с версии 2.0
Число следующих строк для получения.
Это необязательный параметр. Если значение не указано, используется значение атрибута arraysize .
Класс Row
Класс row — это структура данных, похожая на кортеж, которая представляет отдельную строку результата. Если строка содержит столбец с именем «my_column» , вы можете получить доступ к полю «my_column» в row с помощью row.my_column . Кроме того, для доступа к полям вы можете использовать числовые индексы, например row[0] . Если имя столбца недопустимо для использования в качестве имени метода атрибута (например, если оно начинается с цифры), вы можете получить доступ к полю как row[«1_my_column»] .
Начиная с версии 1.0
Методы
asDict Метод
Возвращает представление строки в словаре, индексируемое по именам полей. Если имена полей дублируются, одно из них (но только одно) будет возвращено в словаре. Возвращаемое дублирующееся поле не определяется.
Возвращает dict полей.
Преобразование типов
В следующей таблице типы данных Apache Spark SQL сопоставляются с их эквивалентами Python.
Тип данных Apache Spark SQL Типы данных Python array numpy.ndarray bigint int binary bytearray boolean bool date datetime.date decimal decimal.Decimal double float int int map str null NoneType smallint int string str struct str timestamp datetime.datetime tinyint int Устранение неполадок
Сообщение tokenAuthWrapperInvalidAccessToken: Invalid access token
Проблема. При выполнении кода отображается примерно такое сообщение: Error during request to server: tokenAuthWrapperInvalidAccessToken: Invalid access token .
Возможная причина. Значение, переданное в access_token , не является допустимым личным маркером доступа Azure Databricks.
Рекомендуемое исправление. Проверьте правильность значения, переданного в access_token , и повторите попытку.
Сообщение gaierror(8, ‘nodename nor servname provided, or not known’)
Проблема. При выполнении кода отображается примерно такое сообщение: Error during request to server: gaierror(8, ‘nodename nor servname provided, or not known’) .
Возможная причина. Значение, передаваемое в server_hostname , не является правильным именем узла.
Рекомендуемое исправление. Проверьте правильность значения, переданного в server_hostname , и повторите попытку.
Дополнительные сведения о том, как найти имя узла сервера см. в разделе Получение сведений о подключении.
Сообщение IpAclError
Проблема. При выполнении кода отображается сообщение Error during request to server: IpAclValidation , когда вы пытаетесь использовать соединитель в записной книжке Azure Databricks.
Возможная причина. Возможно, включен доступ на основе списка разрешенных IP-адресов для рабочей области Azure Databricks. Если включен доступ на основе списка разрешенных IP-адресов, подключения из кластеров Spark к уровню управления по умолчанию запрещены.
Рекомендуемое исправление. Попросите администратора добавить подсеть плоскости вычислений в список разрешенных IP-адресов.
Дополнительные ресурсы
Дополнительные сведения см. в разделе:
- Databricks SQL Подключение or для репозитория Python на сайте GitHub
- Типы данных
- Встроенные типы (для bool , bytearray , float , int и str ) на веб-сайте Python.
- Дата и время (для datetime.date и datatime.datetime ) на веб-сайте Python.
- Десятичное число (для decimal.Decimal ) на веб-сайте Python.
- Встроенные константы (для NoneType ) на веб-сайте Python.
