'Inserting with pyodbc in SQL Server table that has two columns as primary key
I am using pyodbc to insert a custom pricelist in SQL Server. My other queries work on the server, but I have difficulty with the following. When I use SQL Server Management Studio the values are nicely inserted:
INSERT INTO abacus_raster.dbo.artikal_cijenovnik_cijena (id_cijenovnik, id_artikal, cijena, order_id, cijena_nab)
VALUES (13, 46642, 3.30, 1, 2.82)
This code does not work in pyodbc:
import pyodbc
cnxn = pyodbc.connect('Driver={SQL Server};'
'Server=SERVER;'
'Database=abacus_raster;'
'Trusted_Connection=yes;')
cursor = cnxn.cursor()
cursor.execute("""INSERT INTO abacus_raster.dbo.artikal_cijenovnik_cijena
(id_cijenovnik, id_artikal, cijena, order_id, cijena_nab) VALUES(13, 46642, 3.30, 1, 2.82)""")
I get this error:
Traceback (most recent call last):
File "C:/dev/cijene/cijene.py", line 109, in
(id_cijenovnik, id_artikal, cijena, order_id, cijena_nab) VALUES(13, 46642, 3.30, 1, 2.82)""")pyodbc.IntegrityError: ('23000', u"[23000] [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint 'PK_artikal_cijenovnik_cijena'. Cannot insert duplicate key in object 'dbo.artikal_cijenovnik_cijena'. (2627) (SQLExecDirectW); [23000] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. (3621)")
ODBC trace from SSMS:
cijene 155c-105c ENTER SQLExecDirect HSTMT 00D91BA8 UCHAR * 0x00AEABB4 [ 156] "INSERT INTO abacus_raster.dbo.artikal_cijenovnik_cijena \ a (id_cijenovnik, id_artikal, cijena, order_id, cijena_nab) VALUES(13, 46642, 2.883, 1, 2.62)" SDWORD 156
cijene 155c-105c EXIT SQLExecDirect with return code 0 (SQL_SUCCESS) HSTMT 00D91BA8 UCHAR * 0x00AEABB4 [ 156] "INSERT INTO abacus_raster.dbo.artikal_cijenovnik_cijena \ a (id_cijenovnik, id_artikal, cijena, order_id, cijena_nab) VALUES(13, 46642, 2.883, 1, 2.62)" SDWORD 156
ODBC Trace from python:
cijene 155c-105c ENTER SQLExecDirect HSTMT 00D91BA8 UCHAR * 0x00AEABB4 [ 156] "INSERT INTO abacus_raster.dbo.artikal_cijenovnik_cijena \ a (id_cijenovnik, id_artikal, cijena, order_id, cijena_nab) VALUES(13, 46642, 2.883, 1, 2.62)" SDWORD 156
cijene 155c-105c EXIT SQLExecDirect with return code -1 (SQL_ERROR) HSTMT 00D91BA8 UCHAR * 0x00AEABB4 [ 156] "INSERT INTO abacus_raster.dbo.artikal_cijenovnik_cijena \ a (id_cijenovnik, id_artikal, cijena, order_id, cijena_nab) VALUES(13, 46642, 2.883, 1, 2.62)" SDWORD 156
DIAG [23000] [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint 'PK_artikal_cijenovnik_cijena'. Cannot insert duplicate key in object 'dbo.artikal_cijenovnik_cijena'. (2627)
DIAG [01000] [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. (3621)
This is how the table looks:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|

