Before polars>=0.16.10
I was using .to_pandas().to_sql()
to send a polars dataframe to the database.
Now it should be possible to use the wrapper pl.Dataframe.write_database()
, however, altough my
connection_uri
is working for pl.read_database()
and pl.read_sql()
. It doesn't work for pl.Dataframe.write_database()
.
This works:
connection_uri = "mssql+pyodbc://username:password@server:port/database"
pl.read_database(query, connection_uri)
# or
pl.read_sql(query, connection_uri)
This doesnt:
df = pl.Dataframe({...})
df.write_database(
table_name='dbo.Mytable',
connection_uri="mssql+pyodbc://username:password@server:port/database",
if_exists="append",
engine="sqlalchemy"
)
»»» sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
So far I kept using the old method .to_pandas().to_sql()
, now with the added .to_pandas(use_pyarrow_extension_array=True).to_sql()
after the latest pandas update.
But I find it quite strange that the same connection_uri string works for read_database but not for write_database.