Das Einfügen in die Access-Datenbank ist nicht möglichPython

Python-Programme
Anonymous
 Das Einfügen in die Access-Datenbank ist nicht möglich

Post by Anonymous »

Ich habe eine Access-Datenbank (.mdb), die von jemand anderem erstellt und mir gesendet wurde. Ich habe versucht, es in beiden NodeJS mit Node-adodb und mit Python und Pyodbc auszuführen, und es wird eine Fehlermeldung angezeigt. Hier ist meine Anfrage:

Code: Select all

insert into sets (id, abbr, [name], [date], legality, path) values ( (SELECT max(id) + 1 FROM sets), 'ASD', 'The Name', '2025.01.01', '++++', 'path\\to\\file' )
Ich erhalte diese Fehlermeldung:

Code: Select all

[HY000] [Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query. (-3025) (SQLExecDirectW)
Wenn ich Folgendes ändere:

Code: Select all

(SELECT max(id) + 1 FROM sets)
in eine fest codierte Zahl wie:

Code: Select all

1033
es funktioniert. Ist Access nicht in der Lage, die nächste ID-Nummer wie diese in einer Einfügeanweisung abzurufen? Ein Problem besteht darin, dass die ID-Spalte nicht auf ein automatisches Nummerierungsfeld eingestellt ist und ich sie manuell festlegen muss.
Hier ist der Code:
Knoten:

Code: Select all

const adodb = require('node-adodb');

var cn = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + process.env.ACCESS_DB_FILENAME + ';';

var connection = adodb.open(cn);
var q = `insert into sets (id, abbr, [name], [date], legality, path) values ( (SELECT max(id) + 1 FROM sets), 'ASD', 'The Name', '2025.01.01', '++++', 'path\\to\\file' )`
var ins = await connection.query(q).then((data) => {
console.log(data)
return data
}).catch(err => {
console.error(JSON.stringify(err))
})
Ich erhalte
{"process":{"code":-2147467259,"message":"Unspecified error"},"exitCode":0}
python:

Code: Select all

import pyodbc

driver = "Microsoft Access Driver (*.mdb, *.accdb)"
path = "c:\\path\\to\\file.mdb"

conn = pyodbc.connect(f"Driver={driver};DBQ={path};")

conn.setdecoding(pyodbc.SQL_CHAR, encoding='latin1')
conn.setencoding('latin1')

cursor = conn.cursor()

sql = "insert into sets (id, abbr, [name], [date], legality, path) values ( (SELECT max(id) + 1 FROM sets), 'ASDF', 'The Name', '2025.01.01', '++++', 'path\\to\\file' )"
print(sql)

res = cursor.execute(sql)
conn.commit()
Ich bekomme:

Code: Select all

pyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query. (-3025) (SQLExecDirectW)')

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post