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

pyodbc - add column to MS Access with default value

我正在尝试使用 pyodbc 和 Python 3.5.

向 MS Access 数据库 table 添加一列

使用表达式

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

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

非常感谢任何帮助!

干杯

遗憾的是,Access ODBC 驱动程序根本不支持 CREATE/ALTER TABLE 语句中列的 DEFAULT 子句。用于 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 语句失败

Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Microsoft Access Driver] Syntax error in CREATE TABLE statement.

TL;DR - 您不能在 pyodbc 下的 CREATE/ALTER TABLE 语句中使用 DEFAULT 子句。