Hello! I have been writing code that would allow me to read from an Excel sheet and writing it in a MS SQL Database. The code was functioning well, meaning it was running and writing all cells until it got to cell E,23 , where it crashes. Column E is called DueDate, and the first 22 cells print similarly to datetime when using nvarchar(max), date or datetime as the columns datatype. If I allow the program to read and write E1 - E22, it won't have a problem writing them to the database. It is when I include this cell that the code gives me that error.
I have looked at all the resources online, yet still find no solution. I first ran this program in Python 3.7.3 and it gave me the same exact problem I played around with the datatypes in my SQL create table query but that did not help. Nvarchar(max) didn't either. Then after reading about some similar issues, I tried changing the drivers in my connection string (after installing them of course) to older drivers to no avail. Next, I tried using a virtual environment in Visual Studio running multiple versions of python, including 2.7(32,64) again with no results. At first, I thought it was a problem with the read_excel function but Visual Studio hinted towards my To_SQL. Code: import pandas as pd import sqlalchemy from sqlalchemy import create_engine import pyodbc #Connection to SQL Server (pyodbc) server = 'SERVERNAME' db = 'DATABASENAME' user = 'NAME' pwd = 'PASSWORD' driver = '{SQL Server Native Client 11.0}' conn = pyodbc.connect( 'DRIVER='+ driver + ';SERVER='+ server + ';DATABASE=' + db + ';UID=' + user + ';PWD=' + pwd ) #Connection to SQL Server 2(SQLAlchemy) engine = create_engine( 'mssql+pyodbc://NAME:PASSWORD@SERVERNAME/DATABASENAME?driver=SQL+Server') #Query To Create Table def make_table(SQLquery): query1 = SQLquery cur = conn.cursor() cur.execute(query1) conn.commit() #Extract from Excel def read_sheet(filePath,sheetName,columns='A:Z', rows=None,skrows=None): global df file = filePath sheet = sheetName cols = columns rows1 = rows rows2 = skrows df = pd.read_excel(file, sheet, usecols= cols,index_col=0,nrows=rows1, skiprows=rows2) return df print('Reading Completed. Writing now...') #Import to SQL Server def write_to_sql(tableName, chunks=1000): col_name= 'E' df.to_sql(tableName, engine, if_exists= 'append', chunksize=chunks,dtype ={col_name:DATETIME for col_name in df}) print('Writing Complete!') make_table( ''' CREATE TABLE test4 (Something1 nvarchar(max), Something2 nvarchar(max), Something3 nvarchar(max), Something4 varchar(max), DueDate nvarchar(max), Something5 int, Something6 nvarchar(max), Something7 nvarchar(max), Something8 nvarchar(max), Notes nvarchar(max) ) ''') read_sheet('C:/Users/USER/Documents/ExcelToSQL/SAMPLE.xlsx','SHEET',columns= 'E',rows=23) write_to_sql('test') conn.close() Full Error & Trace: Traceback (most recent call last): File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\ptvsd_launcher.py", line 119, in <module> vspd.debug(filename, port_num, debug_id, debug_options, run_as) File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\debugger.py", line 37, in debug run(address, filename, *args, **kwargs) File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_local.py", line 79, in run_file run(argv, addr, **kwargs) File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_local.py", line 140, in _run _pydevd.main() File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\pydevd.py", line 1925, in main debugger.connect(host, port) File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\pydevd.py", line 1283, in run return self._exec(is_module, entry_point_fn, module_name, file, globals, locals) File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\pydevd.py", line 1290, in _exec pydev_imports.execfile(file, globals, locals) # execute the script File "C:\Users\USER\Documents\ExcelToSQL\main2.py", line 69, in <module> write_to_sql('test4') File "C:\Users\USER\Documents\ExcelToSQL\main2.py", line 57, in write_to_sql df.to_sql(tableName, engine, if_exists= 'append', chunksize=chunks,dtype={col_name:DATETIME for col_name in df}) File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 2531, in to_sql dtype=dtype, method=method) File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 460, in to_sql chunksize=chunksize, dtype=dtype, method=method) File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1174, in to_sql table.insert(chunksize, method=method) File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 686, in insert exec_insert(conn, keys, chunk_iter) File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 599, in _execute_insert conn.execute(self.table.insert(), data) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 988, in execute return meth(self, multiparams, params) File "C:\Python27\lib\site-packages\sqlalchemy\sql\elements.py", line 287, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 1107, in _execute_clauseelement distilled_params, File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 1248, in _execute_context e, statement, parameters, cursor, context File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 1466, in _handle_dbapi_exception util.raise_from_cause(sqlalchemy_exception, exc_info) File "C:\Python27\lib\site-packages\sqlalchemy\util\compat.py", line 383, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 1224, in _execute_context cursor, statement, parameters, context File "C:\Python27\lib\site-packages\sqlalchemy\dialects\mssql\pyodbc.py", line 347, in do_executemany cursor, statement, parameters, context=context File "C:\Python27\lib\site-packages\sqlalchemy\engine\default.py", line 549, in do_executemany cursor.executemany(statement, parameters) sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HYC00', u'[HYC00] [Microsoft][ODBC SQL Server Driver]Optional feature not implemented (0) (SQLBindParameter)') [SQL: INSERT INTO [test4] ([DueDate]) VALUES (?)] [parameters: ((datetime.datetime(2017, 6, 1, 0, 0),), (datetime.datetime(2017, 7, 15, 0, 0),), (datetime.datetime(2017, 8, 1, 0, 0),), (datetime.datetime(2017, 9, 30, 0, 0),), (datetime.datetime(2017, 10, 1, 0, 0),), (datetime.datetime(2017, 12, 31, 0, 0),), (datetime.datetime(2018, 5, 1, 0, 0),), (datetime.datetime(2018, 1, 14, 0, 0),) ... displaying 10 of 23 total bound parameter sets ... (datetime.datetime(2018, 7, 13, 0, 0),), (datetime.time(0, 0),))] (Background on this error at: http://sqlalche.me/e/dbapi) Press any key to continue . . . -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/3db0b9bc-f029-402d-9b63-4ae30257c6a3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.