gpt4 book ai didi

python - pyodbc 数值被标记为 'None' 而不是 NULL 或空的问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:21 30 4
gpt4 key购买 nike

我目前正在从一组 Access 数据库中获取数值(以及许多其他字符串和数值)并将它们上传到单个 MS SQL Server 数据库。

我使用的是 32 位 Python 3.3 和相应的 pyodbc 包。

我想知道是否有办法捕捉到数字字段为空的事实在驱动程序不返回字符串“无”的情况下 Access 数据库*。使用的语法如下:

access_con = pyodbc.connect(connection_string)
access_cur = access_con.cursor()
access_SQL = 'SELECT * FROM ' + source_table
rows = access_cur.execute(access_SQL).fetchall()
for row in rows:
[Statement uploading each row to SQL Server using an INSERT INTO statement]

如有任何帮助,我们将不胜感激;无论是作为解决方案还是作为更直接的数据传输方式。

*编辑:'None' 只是一个字符串,因为我将它变成一个字符串以将其添加到 INSERT INTO 语句中。使用 row.replace('None','NULL') 替换所有“None”实例并将其替换为“NULL”,后者被 ODBC 驱动程序解释为 NULL 值。

最佳答案

None is a Python object ,不是字符串。它相当于 SQL Server 中的 NULL,或 Access 中的“空”列值。

例如,如果我有一个具有以下定义的 Access 表:

Table Definition

包含以下值(注意 Number 列的第一个值是空的):

Table Data

相关的 Python 代码产生:

...
>>> cursor = connection.cursor()
>>> rows = cursor.execute('select * from Table1').fetchall()
>>> print(rows)
[(None, ), (1, )]

此示例确认空 Access 值返回为 None

PyODBC Documentation很好地解释了 ODBC 和 Python 数据类型是如何映射的。

关于python - pyodbc 数值被标记为 'None' 而不是 NULL 或空的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667667/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com