SQL 查询中的 Python "REPLACE"命令(错误消息)



我是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****Desktopaa2a.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)")

我该如何修复它或使它工作,您能帮我吗?

可能是:

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

但是,替换是一个VBA函数,而不是访问SQL,因此这可能就是您收到错误的原因。

尝试简单:

sql_update_statement = "UPDATE NUMARATAJ SET KAPINUMERIK = LEFT(KAPINO,4) WHERE ISNUMERIC(LEFT(KAPINO),4)"

有几个" VBA函数",这些功能并未由旧的" Jet" ODBC驱动程序(Microsoft Access Driver (*.mdb))直接支撑" ODBC驱动程序(Microsoft Access Driver (*.mdb, *.accdb))。Replace是其中之一。

因此,如果您确实需要使用Replace功能,则可以下载并安装访问数据库引擎重新分配的32位版本并使用较新的ODBC驱动程序。

相关内容

最新更新