使用 Access ODBC 使用 DECIMAL 列创建 TABLE
CREATE TABLE with DECIMAL column using Access ODBC
我正在使用 pypyodbc 模块创建数据库并在其中添加一个 table。
我使用的代码如下:
import pypyodbc
pypyodbc.win_create_mdb('D:\test.mdb')
connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\test.mdb'
connection = pypyodbc.connect(connection_string)
SQL = "CREATE TABLE [test] ([FID] INT,[AREA] FLOAT,[CODE] VARCHAR(10),[X_CO] DECIMAL(10,3));"
connection.cursor().execute(SQL)
connection.commit()
connection.close()
上面的代码创建了数据库,但是在创建 table 时产生了错误。错误如下:
ProgrammingError: (u'42000', u'[42000] [Microsoft] [ODBC Microsoft Access Driver] Syntax error in defining field.
通过搜索网络,我发现问题出在最后一个字段的 DECIMAL 类型上,当我将其从查询中删除时,它会创建 table.
我还尝试更改 Access 中的一个选项以使数据库与 ANSI 92 兼容,当我这样做时,可以从 Access 内部创建 table。
因为这个过程必须完成数百个数据库,所以我想在一个 python 循环中执行此操作,但要做到这一点,必须完成数据库的创建和 table来自上面的代码。
我是不是在语法中遗漏了什么?
有谁知道这是不是模块的问题?
Access ODBC 驱动程序中的 DDL 处理存在许多缺陷,不幸的是您遇到了其中之一。如果要创建带有 DECIMAL 列的 table,则需要使用 pywin32(版本 211 或更高版本)中的 adodbapi
和 Access OLEDB 提供程序来执行 CREATE TABLE
声明:
# -*- coding: utf-8 -*-
import adodbapi # (from pywin32)
conn_str = (
r"Provider=Microsoft.Jet.OLEDB.4.0;"
r"Data Source=C:\Users\Public03test.mdb;"
)
conn = adodbapi.connect(conn_str)
crsr = conn.cursor()
sql = """\
CREATE TABLE [test] (
[FID] INT,
[AREA] FLOAT,
[CODE] VARCHAR(10),
[X_CO] DECIMAL(10,3))
"""
crsr.execute(sql)
conn.commit()
crsr.close()
conn.close()
我正在使用 pypyodbc 模块创建数据库并在其中添加一个 table。
我使用的代码如下:
import pypyodbc
pypyodbc.win_create_mdb('D:\test.mdb')
connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\test.mdb'
connection = pypyodbc.connect(connection_string)
SQL = "CREATE TABLE [test] ([FID] INT,[AREA] FLOAT,[CODE] VARCHAR(10),[X_CO] DECIMAL(10,3));"
connection.cursor().execute(SQL)
connection.commit()
connection.close()
上面的代码创建了数据库,但是在创建 table 时产生了错误。错误如下:
ProgrammingError: (u'42000', u'[42000] [Microsoft] [ODBC Microsoft Access Driver] Syntax error in defining field.
通过搜索网络,我发现问题出在最后一个字段的 DECIMAL 类型上,当我将其从查询中删除时,它会创建 table.
我还尝试更改 Access 中的一个选项以使数据库与 ANSI 92 兼容,当我这样做时,可以从 Access 内部创建 table。
因为这个过程必须完成数百个数据库,所以我想在一个 python 循环中执行此操作,但要做到这一点,必须完成数据库的创建和 table来自上面的代码。
我是不是在语法中遗漏了什么? 有谁知道这是不是模块的问题?
Access ODBC 驱动程序中的 DDL 处理存在许多缺陷,不幸的是您遇到了其中之一。如果要创建带有 DECIMAL 列的 table,则需要使用 pywin32(版本 211 或更高版本)中的 adodbapi
和 Access OLEDB 提供程序来执行 CREATE TABLE
声明:
# -*- coding: utf-8 -*-
import adodbapi # (from pywin32)
conn_str = (
r"Provider=Microsoft.Jet.OLEDB.4.0;"
r"Data Source=C:\Users\Public03test.mdb;"
)
conn = adodbapi.connect(conn_str)
crsr = conn.cursor()
sql = """\
CREATE TABLE [test] (
[FID] INT,
[AREA] FLOAT,
[CODE] VARCHAR(10),
[X_CO] DECIMAL(10,3))
"""
crsr.execute(sql)
conn.commit()
crsr.close()
conn.close()