Closed
Description
This issue is covered at several places, but it doesn't seem there is a solution for mssql.
Referencing #4199
Example:
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
pg_engine = create_engine('postgresql://postgres:*pass*@localhost:5432/test')
ms_engine = create_engine('mssql+pyodbc://localhost\\sqlexpress/test')
df = pd.DataFrame(np.random.rand(5,3))
df = df.where(df < .5, None)
df.to_sql('x', con=pg_engine)
df.to_sql('x', con=ms_engine)
This script created successfully postgres table but fails at mssql:
DataError: (DataError) (
'22018', '[22018] [Microsoft][ODBC SQL Server Driver][SQL Server]
Operand type clash: float is incompatible with text (206) (SQLExecDirectW);
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
Statement(s) could not be prepared. (8180)'
)
u'INSERT INTO x ([index], [0], [1], [2]) VALUES (?, ?, ?, ?)' (
(0L, 0.30160831834724133, None, 0.3381303856312915),
(1L, 0.15675955874181347, None, None),
(2L, None, None, 0.4913946391341001),
(3L, 0.47313398459868405, 0.41395730103112083, 0.024404123661447397),
(4L, 0.02599871607241755, 0.0038944154716251678, None)
)
Full trace: https://gist.github.com/51dd8360a938dece9f28
pandas: 0.14.1
sqlalchemy: 0.9.7
Metadata
Assignees
Labels
No labels