У меня есть база данных Access (.mdb), созданная и отправленная мне кем-то другим. Я пробовал запустить его как в nodejs с node-adodb, так и с python и pyodbc, и получаю ошибку. Вот мой вопрос:
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' )
Я получаю следующую ошибку:
[HY000] [Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query. (-3025) (SQLExecDirectW)
Если я изменю:
(SELECT max(id) + 1 FROM sets)
на жестко закодированный номер, например:
1033
это работает. Разве Access не может обработать получение следующего идентификационного номера в инструкции вставки? Одна из проблем заключается в том, что в столбце id не установлено поле автонумерации, и мне приходится устанавливать его вручную.
Вот код:
узел:
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))
})
Я получаю
{"process":{"code":-2147467259,"message":"Unspecified error"},"exitCode":0}
python:
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()
Я получаю:
pyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query. (-3025) (SQLExecDirectW)')
Подробнее здесь: https://stackoverflow.com/questions/798 ... s-database
Не могу вставить в базу данных Access ⇐ Python
Программы на Python
1768070909
Anonymous
У меня есть база данных Access (.mdb), созданная и отправленная мне кем-то другим. Я пробовал запустить его как в nodejs с node-adodb, так и с python и pyodbc, и получаю ошибку. Вот мой вопрос:
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' )
Я получаю следующую ошибку:
[HY000] [Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query. (-3025) (SQLExecDirectW)
Если я изменю:
(SELECT max(id) + 1 FROM sets)
на жестко закодированный номер, например:
1033
это работает. Разве Access не может обработать получение следующего идентификационного номера в инструкции вставки? Одна из проблем заключается в том, что в столбце id не установлено поле автонумерации, и мне приходится устанавливать его вручную.
Вот код:
[b]узел:[/b]
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))
})
Я получаю
{"process":{"code":-2147467259,"message":"Unspecified error"},"exitCode":0}
[b]python:[/b]
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()
Я получаю:
pyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC Microsoft Access Driver] Query input must contain at least one table or query. (-3025) (SQLExecDirectW)')
Подробнее здесь: [url]https://stackoverflow.com/questions/79865136/cant-insert-into-access-database[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия