Я пытаюсь настроить безсерверный пул SQL в Azure Synapse Analytics и хочу иметь возможность использовать базовые интерфейсы SQL, такие как pyodbc или RODBC, для взаимодействия с ним. Однако я не уверен, как это сделать.
По сути, я хочу иметь возможность использовать стандартные команды, такие как create
или insert
. Кроме того, обертки от RODBC или pyodbc, например, например. RODBC::sqlSave(con, iris, "IRIS")
должно работать. Итак, работает только select
. Однако строка RODBC::sqlSave(channel = con, dat = iris, tablename = "IRIS")
выдает следующую ошибку.
Error in RODBC::sqlSave(channel = con, dat = iris, tablename = "IRIS") :
42000 15868 [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]CREATE TABLE IRIS is not supported.
[RODBC] ERROR: Could not SQLExecDirect 'CREATE TABLE "IRIS" ("rownames" varchar(255), "SepalLength" float, "SepalWidth" float, "PetalLength" float, "PetalWidth" float, "Species" varchar(255))'
Может ли кто-нибудь дать рекомендации о том, как настроить бессерверный пул SQL для работы с этими интерфейсами? В частности, я ищу информацию о любых необходимых конфигурациях или драйверах, которые необходимо установить, а также любой пример кода или руководства, демонстрирующие, как подключиться к бессерверному пулу SQL и выполнить запрос с помощью pyodbc или RODBC.
Заранее спасибо за вашу помощь!
Насколько я понимаю, вы пытаетесь создать таблицу в бессерверном пуле SQL с помощью pyodbc и RODBC. К сведению, создание таблицы в бессерверном пуле sql не поддерживается.
Как настроить бессерверный пул sql, чтобы использовать его с базовыми интерфейсами SQL, такими как pyodbc или RODBC?
Я попытался воспроизвести аналогичную ошибку и получил аналогичную ошибку:
Причина ошибки:
Согласно этому Документу Microsoft
Бессерверный пул SQL не имеет локального хранилища, в базах данных хранятся только объекты метаданных. Поэтому T-SQL, связанный со следующими понятиями, не поддерживается:
- Столы
- Триггеры
- Материализованные представления
- Операторы DDL, отличные от тех, которые связаны с представлениями и безопасностью
- Операторы DML
Создание таблицы не поддерживается в бессерверном пуле SQL. вы можете создавать внешние таблицы.
Вы можете использовать PYODBC
или RODBC
для подключения к бессерверному пулу SQL и запроса, следуя процедурам, перечисленным ниже:
Получите необходимые драйвера:
ODBC
требуется установка драйвера SQL Server pyodbc
. С веб-сайта Microsoft вы можете скачать его.FreeTDS
, чтобы использовать RODBC
. На веб-сайте FreeTDS вы можете получить его.Получите необходимые библиотеки в коде:
pyodbc
, чтобы использовать pyodbc
.RODBC
, чтобы использовать RODBC
.ниже приведен пример кода Python для запроса бессерверного пула SQL.
import pyodbc
# Define the connection string
server = 'servername-ondemand.sql.azuresynapse.net'
database = 'db name'
username = 'demo'
password = 'password'
driver= '{ODBC Driver 17 for SQL Server}'
connection_string = f"DRIVER = {driver};SERVER = {server};DATABASE = {database};UID = {username};PWD = {password}"
# Establish a connection to the SQL pool
conn = pyodbc.connect(connection_string)
# Create a cursor object
cursor = conn.cursor()
# Execute a SQL query
query = 'SELECT * FROM file2'
cursor.execute(query)
# Fetch the results
results = cursor.fetchall()
# Print the results
print(results)
Исполнение и вывод: -
Ссылка: https://learn.microsoft.com/en-us/azure/azure-sql/database/connect-query-python?view=azuresql
Спасибо за ваш ответ. Таким образом, кажется, что нет возможности использовать pyodbc для создания таблиц или вставки значений в существующую. Я прав?
Поскольку мы можем создавать только внешние таблицы, нет возможности создавать таблицы или вставлять значения в существующую в бессерверном пуле sql.
Я удалил тег <sql>, так как он не связан с языком SQL.