Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
[Este artigo faz parte da documentação de pré-lançamento e está sujeito a alterações.]
Este artigo descreve os métodos disponíveis para consultar dados do Dataverse usando o SDK para Python. Você pode consultar dados usando SQL (Structured Query Language) e APIs baseadas em OData.
Os desenvolvedores do Python devem primeiro aprender sobre o SDK para Python lendo Introdução (versão prévia) antes de continuar com este artigo.
Consultar dados usando SQL
O endpoint SQL do serviço web Dataverse fornece uma interface somente leitura para um conjunto restrito de comandos SQL SELECT. Este artigo descreve quais SELECT opções de consulta estão disponíveis. Você também pode acessar o endpoint SQL usando a API Web do Dataverse, permitindo que o código escrito em idiomas diferentes do Python possa acessá-lo.
Importante
O suporte ao SQL é limitado a consultas de leitura apenas. Não há suporte para junções complexas, subconsultas e determinadas funções SQL. A consulta SQL deve seguir o subconjunto com suporte:
- WHERE só pode ser uma árvore de expressão booliana em que as folhas são operadores binários (=, >, como etc.) com um dos argumentos sendo uma referência de coluna direta e outro é uma constante
- TOP permite apenas um literal inteiro
- ORDERBY só pode referenciar colunas e não permite expressões complexas
O código de exemplo a seguir demonstra uma consulta SQL no Python.
# SQL query (read-only)
results = client.query.sql(
"SELECT TOP 10 accountid, name FROM account WHERE statecode = 0"
)
for record in results:
print(record["name"])
Essa chamada retorna uma lista de dicionários de linhas de resultados. Uma lista vazia é retornada quando nenhuma linha corresponde.
Consultar dados usando o OData
Você pode usar o SDK para APIs do Python client.records para emitir consultas OData para dados.
# OData query with paging
# Note: filter and expand parameters are case sensitive
for page in client.records.get(
"account",
select=["accountid", "name"], # select is case-insensitive (automatically lowercased)
filter="statecode eq 0", # filter must use lowercase logical names (not transformed)
top=100,
):
for record in page:
print(record["name"])
# Query with navigation property expansion (case-sensitive!)
for page in client.records.get(
"account",
select=["name"],
expand=["primarycontactid"], # Navigation property names are case-sensitive
filter="statecode eq 0", # Column names must be lowercase logical names
):
for account in page:
contact = account.get("primarycontactid", {})
print(f"{account['name']} - Contact: {contact.get('fullname', 'N/A')}")
Ao escrever suas chamadas OData, siga estas diretrizes.
- Para o
filterparâmetro, use nomes lógicos minúsculos exatos para nomes de coluna (por exemplo, "statecode eq 0", não "StateCode eq 0"). - Para o parâmetro
expand, use nomes de propriedades de navegação sensíveis a maiúsculas e minúsculas que correspondam exatamente aos nomes do servidor. - A instrução
selecte o parâmetroorderbynão diferenciam maiúsculas de minúsculas e são convertidos automaticamente em minúsculas.