pypyodbc
pypyodbc copied to clipboard
pypyodbc.Error: ('HY104', '[HY104] [Microsoft][ODBC SQL Server Driver]Invalid scale value')
it works fine but when it reached this value it throws the above error Invalid scale value') ('EMP3600477', '3600477', None, None, datetime.date(1970, 1, 1), datetime.date(1970, 1, 1), 'TRF', '002', Decimal('0.000000'), '001', None, None, datetime.date(2020, 1, 1), None, None)_
Commend on insert
cursor.execute("INSERT INTO [dbo].[PTTB_EMPLOYMENTDETAILS] VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",('EMP3600477', '3600477', None, None, datetime.date(1970, 1, 1), datetime.date(1970, 1, 1), 'TRF', '002', Decimal('0.000000'), '001', None, None, datetime.date(2020, 1, 1), None, None))
full error log
_Traceback (most recent call last):
File "c:/Users/Serak/Desktop/CRM STAGING TABLE/DemographicMigration.py", line 79, in
table structure
CREATE TABLE [dbo].[PTTB_EMPLOYMENTDETAILS](
[PTEMPLOYMENTIDPK] [varchar](20) NOT NULL,
[PTINTERNALPARTYID] [varchar](30) NOT NULL,
[PTJOBTITLE] [varchar](50) NULL,
[PTNAMEOFEMPLOYER] [varchar](256) NULL,
[PTSTARTDT] [date] NULL,
[PTENDDT] [date] NULL,
[PTPAYMENTMETHOD] [varchar](50) NULL,
[PTPAYMENTFREQUENCY] [varchar](50) NULL,
[PTGROSSANNUALSALARY] [decimal](24, 6) NULL,
[PTEMPLOYMENTTYPE] [varchar](50) NULL,
[PTTYPEOFBUSINESS] [varchar](50) NULL,
[PTEMPLOYEEID] [varchar](50) NULL,
[PTCONTRACTENDDT] [date] NULL,
[PTEMPLOYERSTELEPHONE] [varchar](20) NULL,
[PTEMPLOYERPARTYID] [varchar](30) NULL,
CONSTRAINT [PK__PTTB_EMP__DFB9CA518EB466F8] PRIMARY KEY CLUSTERED
(
[PTEMPLOYMENTIDPK] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
I think that your ODBC does not understand your "DECIMAL" value... try to not pass that value or pass it as string on the sql string and not as a parameter, probably it is that. if you do a google search with:
'HY104', '[HY104] [Microsoft][ODBC SQL Server Driver]Invalid scale value'
you will probably find more useful info on this mather.
Good luck!
well that's not an option when you are creating an ETL tool i extract data row by row from Db2 and push it to SQL Server. i which i might require iterating thought a tuple change to a tuple again and push which is very expensive, i tried changing the odbc drivers to latest version but still nothing its not with the odbc because the same code works with pyodbc the problem is when i am importing pypyodbc as pyodbc