访问字段名称包含变音符号时出现pyodbc错误
Posted
技术标签:
【中文标题】访问字段名称包含变音符号时出现pyodbc错误【英文标题】:pyodbc error when Access field name contains diacritics 【发布时间】:2013-11-24 15:17:58 【问题描述】:我正在使用 pyodbc python 模块。
当我使用SELECT = "SELECT k.Poznámka as poznamka from karta as k"
时出现错误
错误:('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] 参数太少。应为 1. (-3010) (SQLExecDirectW)')
问题在于名称“Poznámka”和“á”。当我使用没有变音符号的字段标题的相同选择时,例如 k.Name 一切正常。
请问这是怎么回事?
【问题讨论】:
这个很不清楚。请记住,我们不知道您在说什么。 【参考方案1】:对于它的价值,以下代码对我来说没有错误:
# -*- coding: cp1252 -*-
import pyodbc
cnxn = pyodbc.connect('DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\\Users\\Public\\Database1.accdb;')
cursor = cnxn.cursor()
cursor.execute("SELECT k.Poznámka as poznamka from karta as k")
while 1:
row = cursor.fetchone()
if not row:
break
print row.poznamka
cnxn.close()
编辑
使用编码为 UTF-8 的 Python 源文件,以下内容对我有用:
# -*- coding: UTF-8 -*-
import pyodbc
cnxn = pyodbc.connect('DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=C:\\Users\\Public\\Database1.accdb;')
cursor = cnxn.cursor()
sql = u"SELECT k.Poznámka as poznamka from karta as k"
cursor.execute(sql.encode('cp1252'))
while 1:
row = cursor.fetchone()
if not row:
break
print row.poznamka
cnxn.close()
【讨论】:
yeeees,这一定是我的问题。我在 python 文件中使用 utf-8,但似乎我的访问权限是 cp1252。请问,我应该如何编辑我的 sql 查询才能处理这个问题? @peter 当你的评论出现时,我刚刚更新了我的答案。 谢谢。但我无法更改整个 python 脚本的编码。有没有机会只为这个 SELECT 更改它?我直接在 SELECT 中尝试了 u'Poznámka'.encoding('cp1252') 它没有帮助。 戈德,谢谢你的努力。但错误“参数太少。预期 1...”仍然存在 @peter 我能说什么?我的脚本适合我。你可以下载它here,看看它是否包含一些我看不到的神奇优点。以上是关于访问字段名称包含变音符号时出现pyodbc错误的主要内容,如果未能解决你的问题,请参考以下文章
终极解决方案为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
通过 sqlalchemy 和 pyodbc 访问 MS SQL 数据库时出现“登录超时”错误
终极解决方案为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。