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
子句。
我正在尝试使用 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
子句。