Команда Python «REPLACE» в запросе SQL (сообщение об ошибке) - PullRequest
0 голосов
/ 14 февраля 2019

Я новичок в python, и мне нужен этот запрос, чтобы проверить мою базу данных, если она работает.Есть много запросов, но это только один из них.

import pyodbc
db_file = 'C:\\Users\\****\\Desktop\\bbbb.mdb' #define the location of your Access file
odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s' %(db_file) # define the odbc connection parameter
conn = pyodbc.connect(odbc_conn_str)
cursor = conn.cursor() # create a cursor
sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = IIf (ISNUMERIC (LEFT (REPLACE(KAPINO,'-','/'),4)=-1),LEFT(KAPINO,4))" # edit the SQL statement that you want to execute
cursor.execute(sql_update_statement) # execute the SQL statement
cursor.commit()
cursor.close()
conn.close()

Когда я пытаюсь запустить этот код, он говорит:

  File "C:\Users\****\Desktop\aa2a.py", line 9, in <module>
    cursor.execute(sql_update_statement) # execute the SQL statement
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Microsoft Access Sürücüsü] Undefined 'REPLACE' function in the expression. (-3102) (SQLExecDirectW)")

Как я могу это исправить или заставить его работать, вы можете мне помочь?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Существует несколько «функций VBA», которые непосредственно не поддерживаются более старым драйвером ODBC «Jet» (Microsoft Access Driver (*.mdb)), но напрямую поддерживаются более новым драйвером ODBC «ACE» (Microsoft Access Driver (*.mdb, *.accdb))).Replace является одной из этих функций.

Поэтому, если вам действительно нужно использовать функцию Replace, вы можете загрузить и установить 32-разрядную версию распространяемого компонента Access Database Engine и использовать более новый драйвер ODBC.

0 голосов
/ 14 февраля 2019

Это может быть:

sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = LEFT(KAPINO,4) WHERE ISNUMERIC(LEFT(REPLACE(KAPINO,'-','/'),4)"

Однако Заменить - это функция VBA, а не Access SQL, поэтому, вероятно, вы и получаете сообщение об ошибке.

Попробуйте просто:

sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = LEFT(KAPINO,4) WHERE ISNUMERIC(LEFT(KAPINO),4)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...