簡體   English   中英

指令 INSERT INTO 中的 Pyodbc 語法錯誤

[英]Pyodbc Syntax Error in the instruction INSERT INTO

我在這里遇到了與這個問題相同的錯誤,但是,嘗試用方括號括起來的列名的解決方案沒有結果。

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][Driver ODBC Microsoft Access] INSERT INTO 語句中的語法錯誤。(-3502) (SQLPrepare)")

下面是代碼。 是的,我完全意識到數據庫結構沒有遵循任何最佳實踐,但我無法重構它。

conn_str = (r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
            r'DBQ=C:\temp\b.accdb;')
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
insert = 'INSERT INTO [GENERALITA\' FERMATA] ([COD_Fermata],[Linee],[Azienda],[Fermata_Corrispondente],[Distanza tra fermate corrispondenti],[COD_Corrisp],[Denominazione],[Riferimento],[Direzione],[Su piazzola esterna],[Su carreggiata],[Distanza da curve (m)],[Distanza da dossi (m)],[Distanza da incroci o intersezioni (m)],[Distanza da attraversamento pedonale (m)],[Coord_Y],[Coord_X],[Zona],[Foto 1],[Foto 2],[Foto 3],[Foto 4],[Foto 5],[Display a messaggio variabile],[Panchine],[Tabella orari],[Pensilina],[Porta biciclette],[QR code o altri sistemi statici],[Pubblicità],[Punto interscambio bus],[Note interscambio],[Altri operatori],[Parcheggio],[Divieto di sorpasso],[Incrocio semaforizzato],[Isola salvagente],[Illuminazione],[Passaggio pedonale],[Strisce gialle tratteggiate],[Scritta gialla \"bus\"],[Segnaletica verticale],[Sosta bus corsia riservata],[Spazio sosta pedoni],[Limiti di velocità],[Persenza marciapiede],[Rampa marciapiede],[Pulsante semaforo],[Corrimano],[Banchina dispositivi di protezione],[Pista ciclo-pedonale],[Segnalazione non-vedenti],[Note_Generalita],[Note_Posizione],[Note_Comfort],[Note_Sicurezza]) 
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'
params =(codFerm,ln,aznd,ferCor, disFerCor,codCor,descr,rif, drz, suPiazEs, sucar, distCrv, distDoss, distIncr, distAttPed, coordY, coordX, zn, f1,f2,f3,f4,f5, dsplMess,panc,tabOr,pens,prtBc,qr,pub,ptScmbBus,ntInt,altrOp,park,noPass,semfr,isl,illum,passPed,strGia,scrGia,senVert,sostCors,sostPed,limVel,marPed,ramPed,pulsSem,crrMn,bncPrt,pstCicPed,senNvd,notGen,notPos,notCom,notSic)
cursor.execute (insert, params)
cursor.commit()

這是打印出來的插入語句。

INSERT INTO [GENERALITA' FERMATA] ([COD_Fermata],[Linee],[Azienda],[Fermata_Corrispondente],[Distanza tra fermate corrispondenti],[COD_Corrisp],[Denominazione],[Riferimento],[Direzione],[Su piazzola esterna],[Su carreggiata],[Distanza da curve (m)],[Distanza da dossi (m)],[Distanza da incroci o intersezioni (m)],[Distanza da attraversamento pedonale (m)],[Coord_Y],[Coord_X],[Zona],[Foto 1],[Foto 2],[Foto 3],[Foto 4],[Foto 5],[Display a messaggio variabile],[Panchine],[Tabella orari],[Pensilina],[Porta biciclette],[QR code o altri sistemi statici],[Pubblicità],[Punto interscambio bus],[Note interscambio],[Altri operatori],[Parcheggio],[Divieto di sorpasso],[Incrocio semaforizzato],[Isola salvagente],[Illuminazione],[Passaggio pedonale],[Strisce gialle tratteggiate],[Scritta gialla "bus"],[Segnaletica verticale],[Sosta bus corsia riservata],[Spazio sosta pedoni],[Limiti di velocità],[Persenza marciapiede],[Rampa marciapiede],[Pulsante semaforo],[Corrimano],[Banchina dispositivi di protezione],[Pista ciclo-pedonale],[Segnalazione non-vedenti],[Note_Generalita],[Note_Posizione],[Note_Comfort],[Note_Sicurezza]) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)('4', None, None, False, None, None, 'Torino Rossetto', None, None, False, False, None, None, None, None, None, None, None, '.\\FOTO TOTALI\\4(1).jpg', '.\\FOTO TOTALI\\4(2).jpg', '.\\FOTO TOTALI\\4(3).jpg', '.\\FOTO TOTALI\\4(4).jpg', '.\\FOTO TOTALI\\4(5).jpg', False, False, False, False, False, False, False, False, None, None, False, False, False, False, False, False, False, False, False, False, False, 0, False, False, False, False, False, False, False, None, None, None, None)

列數、問號和參數是正確的,在所有情況下都是 56,但我不斷收到該錯誤。

編輯:我也將表名括在方括號中,無論是否轉義“bus”上的引號都不起作用。

我已經把你的INSERT變成了CREATE TABLE ,有兩點需要注意:

  • 由於空格和撇號,表名也可以/應該括在方括號中, GENERALITA\' FERMATA[GENERALITA' FERMATA]
  • [Scritta gialla \"bus\"]列被創建為Scritta gialla \"bus\"而不是我認為您可能正在嘗試訪問的Scritta gialla "bus"
CREATE TABLE [GENERALITA' FERMATA] (
    [COD_Fermata] BIT,
    [Linee] BIT,
    [Azienda] BIT,
    [Fermata_Corrispondente] BIT,
    [Distanza tra fermate corrispondenti] BIT,
    [COD_Corrisp] BIT,
    [Denominazione] BIT,
    [Riferimento] BIT,
    [Direzione] BIT,
    [Su piazzola esterna] BIT,
    [Su carreggiata] BIT,
    [Distanza da curve (m)] BIT,
    [Distanza da dossi (m)] BIT,
    [Distanza da incroci o intersezioni (m)] BIT,
    [Distanza da attraversamento pedonale (m)] BIT,
    [Coord_Y] BIT,
    [Coord_X] BIT,
    [Zona] BIT,
    [Foto 1] BIT,
    [Foto 2] BIT,
    [Foto 3] BIT,
    [Foto 4] BIT,
    [Foto 5] BIT,
    [Display a messaggio variabile] BIT,
    [Panchine] BIT,
    [Tabella orari] BIT,
    [Pensilina] BIT,
    [Porta biciclette] BIT,
    [QR code o altri sistemi statici] BIT,
    [Pubblicità] BIT,
    [Punto interscambio bus] BIT,
    [Note interscambio] BIT,
    [Altri operatori] BIT,
    [Parcheggio] BIT,
    [Divieto di sorpasso] BIT,
    [Incrocio semaforizzato] BIT,
    [Isola salvagente] BIT,
    [Illuminazione] BIT,
    [Passaggio pedonale] BIT,
    [Strisce gialle tratteggiate] BIT,
    [Scritta gialla \"bus\"] BIT,
    [Segnaletica verticale] BIT,
    [Sosta bus corsia riservata] BIT,
    [Spazio sosta pedoni] BIT,
    [Limiti di velocità] BIT,
    [Persenza marciapiede] BIT,
    [Rampa marciapiede] BIT,
    [Pulsante semaforo] BIT,
    [Corrimano] BIT,
    [Banchina dispositivi di protezione] BIT,
    [Pista ciclo-pedonale] BIT,
    [Segnalazione non-vedenti] BIT,
    [Note_Generalita] BIT,
    [Note_Posizione] BIT,
    [Note_Comfort] BIT,
    [Note_Sicurezza] BIT)

檢查列:

EXEC SP_COLUMNS [GENERALITA' FERMATA]

只是為了確認一下,此插入有效(使用上面創建的Scritta gialla \"bus\" ):

INSERT INTO [GENERALITA' FERMATA] (
    [COD_Fermata],
    [Linee],
    [Azienda],
    [Fermata_Corrispondente],
    [Distanza tra fermate corrispondenti],
    [COD_Corrisp],
    [Denominazione],
    [Riferimento],
    [Direzione],
    [Su piazzola esterna],
    [Su carreggiata],
    [Distanza da curve (m)],
    [Distanza da dossi (m)],
    [Distanza da incroci o intersezioni (m)],
    [Distanza da attraversamento pedonale (m)],
    [Coord_Y],
    [Coord_X],
    [Zona],
    [Foto 1],
    [Foto 2],
    [Foto 3],
    [Foto 4],
    [Foto 5],
    [Display a messaggio variabile],
    [Panchine],
    [Tabella orari],
    [Pensilina],
    [Porta biciclette],
    [QR code o altri sistemi statici],
    [Pubblicità],
    [Punto interscambio bus],
    [Note interscambio],
    [Altri operatori],
    [Parcheggio],
    [Divieto di sorpasso],
    [Incrocio semaforizzato],
    [Isola salvagente],
    [Illuminazione],
    [Passaggio pedonale],
    [Strisce gialle tratteggiate],
    [Scritta gialla \"bus\"],
    [Segnaletica verticale],
    [Sosta bus corsia riservata],
    [Spazio sosta pedoni],
    [Limiti di velocità],
    [Persenza marciapiede],
    [Rampa marciapiede],
    [Pulsante semaforo],
    [Corrimano],
    [Banchina dispositivi di protezione],
    [Pista ciclo-pedonale],
    [Segnalazione non-vedenti],
    [Note_Generalita],
    [Note_Posizione],
    [Note_Comfort],
    [Note_Sicurezza])
VALUES(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)

注意。 這是針對 SQL Server 2019 進行測試的,因為我無權訪問 Access DB,但應該兼容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM