Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

2K
Visualizações
`pd.read_sql(sql, motor)` plantea NotImplementedError: este método no está implementado para SQLAlchemy 2.0

Traté de crear un DataFrame de pandas directamente desde mi base de datos sqlserver usando un motor sqlalchemy:

 engine = create_engine(URL_string, echo=False, future=True) query_string = "..." dt = pd.read_sql(query_string, engine)

Pero esto plantea este error:

 File <redacted>/venv/lib/python3.8/site-packages/sqlalchemy/future/engine.py:320, in Engine._not_implemented(self, *arg, **kw) 319 def _not_implemented(self, *arg, **kw): --> 320 raise NotImplementedError( 321 "This method is not implemented for SQLAlchemy 2.0." 322 ) NotImplementedError: This method is not implemented for SQLAlchemy 2.0.

Hago esto porque usar la conexión de pyodbc solo da una advertencia:

 UserWarning: pandas only support SQLAlchemy connectable(engine/connection) ordatabase string URI or sqlite3 DBAPI2 connectionother DBAPI2 objects are not tested, please consider using SQLAlchemy warnings.warn(

Estoy usando la versión 1.4 de sqlalchemy... entonces, ¿cómo soluciono esto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Simplemente elimine future=True de los parámetros del engine :

 engine = create_engine(URL_string, echo=False)

¡Entonces deberías ser bueno para ir!

over 4 years ago · Santiago Trujillo Relatório

0

Esto me funcionó para usar pyodbc y pandas de forma coherente. Simplemente reemplace la consulta y la información de conexión.

 import pandas as pd import warnings query = 'SELECT * FROM TABLE' conn = pyodbc.connect('db connection info') with warnings.catch_warnings(): warnings.simplefilter('ignore', UserWarning) df = pd.read_sql(query, conn)
over 4 years ago · Santiago Trujillo Relatório

0

Desafortunadamente, esto parece ser un problema abierto que no se resolverá hasta pandas 2.0, puede encontrar información sobre esto aquí y aquí .

No encontré ningún trabajo satisfactorio, pero algunas personas parecen estar usando dos configuraciones del motor, una con el indicador futuro Falso:

 engine2 = create_engine(URL_string, echo=False, future=False)

Esta solución estaría bien si crea cadenas de consulta como lo hizo, pero si está usando el ORM para mí, lo mejor que podría hacer es una función personalizada, que probablemente esté lejos de ser óptima, pero funciona:

 Conditions = session.query(ExampleTable) def custom_read(query): return pd.DataFrame({i:j.__dict__ for i,j in enumerate(query.all())},).T.drop(columns='_sa_instance_state') df = custom_read(ExampleTable)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda