Unable to insert Python lists into ARRAY<STRING> columns using pandas to_sql
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
Comece com DatabricksArray e o caminho de INSERT de pandas DataFrame.to_sql, usando o exemplo mínimo fornecido para reproduzir os arrays vazios. Rastreie como os parâmetros de lista do Python são vinculados para ARRAY; considera-se concluído quando ambas as linhas mantiverem seus elementos de e-mail em vez de se tornarem arrays vazios, com cobertura de regressão para ambos os exemplos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Description
Hello,
I am trying to insert Python lists into a Databricks
ARRAY<STRING> column using pandas DataFrame.to_sql() with
the Databricks SQLAlchemy dialect.
The table is created correctly with an ARRAY<STRING> column,
but the inserted arrays are stored as empty arrays.
Minimal reproducible example
import pandas as pd
from sqlalchemy import create_engine, String, Integer
from databricks.sqlalchemy import DatabricksArray
from urllib.parse import quote_plus
df = pd.DataFrame([
{
"GROUP_ID": 1,
"PARAM": ["[email protected]", "[email protected]"],
},
{
"GROUP_ID": 2,
"PARAM": ["[email protected]"],
},
])
connection_string = (
f"databricks://token:{quote_plus(TOKEN)}@{DATABRICKS_HOST}?"
f"http_path={quote_plus(DATABRICKS_HTTP_PATH)}"
f"&catalog={quote_plus(CATALOG)}"
f"&schema={quote_plus(SCHEMA)}"
)
engine = create_engine(connection_string, echo=True)
df.to_sql(
"mailing_group",
con=engine,
index=False,
if_exists="replace",
dtype={
"GROUP_ID": Integer,
"PARAM": DatabricksArray(String),
},
)
Logs:
2026-08-11 08:15:07,657 INFO sqlalchemy.engine.Engine
CREATE TABLE mailing_group (
GROUP_ID INT,
PARAM ARRAY
) USING DELTA
TBLPROPERTIES('delta.feature.allowColumnDefaults' = 'enabled')
2026-08-11 08:15:07,657 INFO sqlalchemy.engine.Engine [no key 0.00074s] {}
2026-08-11 08:15:09,665 INFO sqlalchemy.engine.Engine INSERT INTO mailing_group (GROUP_ID, PARAM) VALUES (:GROUP_ID, :PARAM)
2026-08-11 08:15:09,666 INFO sqlalchemy.engine.Engine [generated in 0.00110s] [{'GROUP_ID': 1, 'PARAM': ['[email protected]', '[email protected]']}, {'GROUP_ID': 2, 'PARAM': ['[email protected]']}]
Environment
- Python : 3.12
- Pandas : 2.2.3
- databricks-sqlalchemy : 2.0.10
- DBSQL Version: 2026.20
- databricks-sql-connector: 4.0.5
- Linguagem predominante
- Python
- Estrelas
- 24
- Forks
- 20
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de databricks/databricks-sqlalchemy
-
get_columns() missing @reflection.cache causes a warehouse round-trip on every reflection callAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
-
get_foreign_keys() missing @reflection.cache causes excessive DESCRIBE TABLE EXTENDED queriesAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 64/100
databricks/databricks-sqlalchemy#77 · 1 comentário ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
Todas as issues de databricks/databricks-sqlalchemy
Issues semelhantes
-
Claiming namespace `apoint`Abertanamespace operations
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
EclipseFdn/open-vsx.org#13573 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
collective/icalendar#1854 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
rancher/rancher-ai-agent#412 ·
Mantenedores costumam responder em até 6 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
TUDelftGeodesy/DePSI#134 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
HenriquesLab/rxiv-maker#335 ·