pyodbc - 使用默认值将列添加到 MS Access

2023-11-29

我正在尝试使用 pyodbc 和 Python 3.5 将一列添加到 MS Access 数据库表中。

使用表达式

self.cursor.execute("ALTER TABLE data ADD COLUMN testColumn TEXT(10)")

工作正常,但是当我尝试添加默认值(默认“否”)时,它会抛出语法错误。我尝试了多种组合,但没有成功。

任何帮助深表感谢!

Cheers


遗憾的是,Access ODBC 驱动程序根本不支持DEFAULT中某列的子句CREATE/ALTER TABLE声明。 Access 的 ODBC 驱动程序和 OLEDB 提供程序在 DDL 支持方面存在一定差异,因此不幸的是,对于相同的 DDL 语句,我们可能会得到不一致的结果,如以下使用 ADO 的 VBScript 代码所示:

OLEDB 工作正常...

Option Explicit
Dim conn
Set conn = CreateObject("ADODB.Connection")
Dim connStr
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public\mdbTest.mdb"
conn.Open connStr

On Error Resume Next
conn.Execute "DROP TABLE Cheeses"
On Error GoTo 0
conn.Execute "CREATE TABLE Cheeses (Id LONG PRIMARY KEY, CheeseName TEXT(50) DEFAULT 'Cheddar')"

conn.Execute "INSERT INTO Cheeses (Id) VALUES (1)"

Dim rst
Set rst = CreateObject("ADODB.Recordset")
rst.Open "SELECT CheeseName FROM Cheeses WHERE Id = 1", conn
If rst("CheeseName").Value = "Cheddar" Then
    WScript.Echo "Success"
End If

conn.Close

...但是如果我们更改连接字符串以使用 ODBC ...

connStr = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\Public\mdbTest.mdb"

...然后我们尝试执行CREATE TABLE语句失败并显示

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序:[Microsoft][ODBC Microsoft Access 驱动程序] CREATE TABLE 语句中存在语法错误。

TL;DR - 你不能使用DEFAULT中的条款CREATE/ALTER TABLEpyodbc 下的声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyodbc - 使用默认值将列添加到 MS Access 的相关文章

随机推荐