odbc和Sql Server问题

大家好 我使用MS SQL Server通过ODBC找到了问题 来自Python-Win32的模块. 我正在与马克·哈蒙德(Mark Hammond)联系,他正在努力帮助,但他是 非常忙,我无法确定问题是否起源于 ODBC模块,带有ODBC驱动程序或SQL Server本身. 如果有人可以帮助我确定这一点,我将非常感谢. 假设带有VARCHAR类型的列C1'表" T1"(10). cur.execute("更新t1 set c1 =?",['']) 结果是C1实际上设置为10个空间的字符串. 如果我在不使用参数的情况下执行命令 - cur.execute("更新T1设置C1 =''") 它有效-C1设置为一个空字符串. 我正在使用Windows Server 2003(SP1),SQL Server 2000(SP4)和ODBC 驾驶员2000.86.1830.00. 我在SQL Server 2005上尝试了它,也使用Windows Server 2003. 同样的问题. Mark拥有一个测试套件,该套件可以随时创建MS Access数据库, 并允许您对其运行任何ODBC命令. 如果我尝试以上 使用此设置命令,它可以正常工作. 如果我修改了测试套件 要连接到我已安装的SQL Server,它会失败. 这似乎暗示着 该问题不是来自ODBC模块. 我已经搜索了MS SQL Server新闻组,搜索'空 细绳'. 我找到了几篇文章,但它们与事实有关 在较早版本的SQL Server中,尝试设置VARCHAR 列到一个空字符串导致将其设置为一个空间. 我 会以为,如果我的问题来自MS方面,我会 找到一些引用,但我不能. 一种证明是从其他一些人执行命令的方法 允许您通过ODBC驱动程序传递临时命令的工具 通过SQL Server. 我似乎记得读过你可以做到这一点 来自VB和MS Access,但我不知道该怎么做. 我有 MS访问在我的机器上安装,因此,如果有人可以通过 需要步骤,我可以自己尝试一下. 或者,如果有人 有一个可以测试的设置,我对此非常感兴趣 听到结果. 任何建议都将不胜感激. 谢谢 弗兰克·米尔曼

# 回答1

弗兰克·米尔曼(Frank Millman)写道:cur.execute("更新t1 set c1 =?",[''])结果是C1实际上设置为10个空格的字符串. 如果我在不使用参数的情况下执行命令 - cur.execute(" update t1 set c1 =''")它的工作-c1设置为一个空字符串. 我正在使用Windows Server 2003(SP1),SQL Server 2000(SP4)和ODBC驱动程序2000.86.1830.00. 您可能想与MXODBC进行测试,以查看问题是否存在 ODBC模块或堆栈下方的东西. 鉴于它有效 使用MS-JET(访问)ODBC提供商(ODBC接口),但没有 SQL Server提供商,我会说问题很可能在外面 ODBC模块的控制. 我与SQL Server没有多大关系,但是我想知道是否有 一些可能影响的配置设置 这种行为. ------------------------------------------------------------------------------------ --------------------------------- 安德鲁·我麦金太尔"这些想法是我的……" 电子邮件:anthydeyder@bullseye.apana.org.au(pref)| 蜗牛:邮政信箱370 andydeby@pcug.org.au(alt)| BELCONNEN ACT 2616 网络:http://www.andymac.org/ | 澳大利亚
# 回答2

弗兰克·米尔曼(Frank Millman)写道:cur.execute("更新t1 set c1 =?",[''])结果是C1实际上设置为10个空格的字符串. 如果我在不使用参数的情况下执行命令 - cur.execute(" update t1 set c1 =''")它的工作-c1设置为一个空字符串. 感谢您的答复,安德鲁和丹尼斯. 我查看了访问数据对象,但我发现它使用Ole-DB到 连接到数据库,这不是一个有效的比较,所以我 没有追求那条路线. 然后我遵循了安德鲁(Andrew)尝试mx.odbc的建议 - 我应该有 首先想到了这一点. 使用完全相同的连接字符串和完全相同的SQL 命令,它正常工作,其中Win32 ODBC无法正常工作. 这似乎表明问题在于Win32. 我会建议 结果标记. 再次感谢 弗兰克

标签: python

添加新评论