标签: pypyodbc

"可选功能未实现(106)(SQLBindParameter)"与pyodbc出错

我正在努力想出这个问题.我第一次使用Python,并尝试将从twitter收集的数据写入Access 2010数据库.

我正在使用的命令是:

cursor.execute('''insert into core_data(screen_name,retweet_count) values (?,?,)''', (sname,int(rcount)))
Run Code Online (Sandbox Code Playgroud)

返回的错误消息是:

Traceback (most recent call last):  File "C:/Documents and Settings/Administrator/PycharmProjects/clientgauge/tw_scraper.py", line 44, in <module>
cursor.execute('''insert into core_data(screen_name,retweet_count) values (?,?,)''', (sname,int(rcount))) 
pyodbc.Error: ('HYC00', '[HYC00] [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented  (106) (SQLBindParameter)')
Run Code Online (Sandbox Code Playgroud)

我尝试过将数据传递到数据库的各种排列.如果我删除int(rcount)条目,它将发布第一个值sname,没有任何问题.一旦我尝试传递多个参数,这就是问题开始的时候.

我有一种感觉,我错过了一些非常基本的东西,但是我找不到任何这样的例子,它实际上与我正在尝试的东西有类似的外观,而我正在尝试的并不困难......用户错误可能:)

任何帮助将非常感激.

干杯,凯夫

完整的代码是:

from twython import Twython
import pyodbc
ACCESS_DATABASE_FILE = 'C:\\data\\ClientGauge.accdb'
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' %ACCESS_DATABASE_FILE
cnxn = pyodbc.connect(ODBC_CONN_STR, autocommit=True)
cursor = cnxn.cursor()
APP_KEY = '<removed>'
APP_SECRET = '<removed>'
# Authenticate on twitter …
Run Code Online (Sandbox Code Playgroud)

python pyodbc ms-access-2010 pypyodbc

4
推荐指数
1
解决办法
7396
查看次数

Python/pypyODBC:使用字符串和NULL插入行

我对Python很陌生,并且在这个当前项目之前还没有真正与SQL Server和XML Parsing进行交互(可能甚至不是最好的方法).简而言之,我的IT团队非常回溯,我需要将数据放入沙箱表(从XML解析).

有一段XML包含属性[xx] 001到[xx] 025.并非所有这些属性都包含在我将要解析的每个XML中.因此,我遍历所有可能属性的循环并将结果附加到列表中.由于并非所有属性都在每个XML中,因此我可以通过尝试表示每个属性来生成noneTypes.在创建我的SQL插入语句之前,我需要将它们转换为NULL,这不是问题.可能有一些非常简单的方法来解决这个问题,但我的新手状态阻碍了我的进步.相关的代码片段如下......

也许总的来说有更好的方法吗?我担心sqlList可能只能在达到限制之前变得如此之大.

#this list contains Nones
sqlList = (", ".join(map(repr,appendedList)))

#the Nones are an issue when I get to here
curs.execute("USE Sandbox INSERT INTO myTable VALUES (%s)" % (sqlList))
curs.commit()
Run Code Online (Sandbox Code Playgroud)

以下是sqlList的示例:

'20_2014', '20_2014_3/25/2015 2:01 PM', 'FBR', 'A', '0', '0', '3', '1', '134', None, None, '0', None, '0', '0', '0', '0', '0', None, None, '2', None, None, None, None
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

pypyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'None'.")
Run Code Online (Sandbox Code Playgroud)

python xml sql-server pypyodbc

4
推荐指数
1
解决办法
1万
查看次数

我正在使用 pypyodbc.connect - 有没有办法给它一个应用程序名称?

在 _mssql.connect 中,有一个添加应用程序名称的选项。我想知道 pypyodbc.connect 是否有类似的东西。

谢谢。

python odbc pypy pypyodbc

3
推荐指数
1
解决办法
1131
查看次数

Python 3 和 pypyodbc 存储过程错误

我目前正在运行 Python 3.4.2 和 pypyodbc 1.3.6。

我正在尝试在 SQL 服务器上运行存储过程。当我在没有所需参数(日期)的情况下运行存储过程时,我收到一个错误,指出需要一个参数(这是预期的)。

当我添加这个日期时,我收到一条错误消息:

无效的游标状态。

我已验证日期格式正确,(YYYY-MM-DD)并且尝试了多种方法,但每次都遇到相同的错误。

下面是我正在使用的代码:

import pypyodbc as odbc

connection_string = "DRIVER={SQL SERVER};SERVER=SERVERNAME;DATABASE=DATABASE;Trusted_Connection=yes"
conn = odbc.connect(connection_string)
cur = conn.cursor()
cur.execute("exec stored_procedure '2017-05-01'")
report_temp = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)

收到错误:

line 975, in ctrl_err raise ProgrammingError(state,err_text)
pypyodbc.ProgrammingError: ('24000', '[24000] [Microsoft][ODBC SQL Server Driver]Invalid cursor state')
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

sql-server stored-procedures python-3.x pypyodbc

3
推荐指数
1
解决办法
1333
查看次数

64 位 Python 可以连接 32 位 MS 访问驱动程序吗?

如何在python 64位中使用32位MS访问驱动程序进行odbc连接?可以通过改变pypyodbc中的环境句柄或odbc常量,或者创建一个位转换文件来完成吗?
另一个想法(不确定是否可能):有没有办法在代码执行期间切换到 32 位 python.exe(仅当用户想要拉取访问数据库时)?本质上类似于...

if access api called and struct.calcsize("P") == 8: open python 32bit interpreter and connect to 32bit driver

对所有解决方案开放...谢谢

python ms-access-2010 python-3.x pypyodbc

2
推荐指数
1
解决办法
6162
查看次数

使用 pandas.read_sql 和 MSAccess 的特定表名的“sql 执行失败”

最奇怪的事情正在发生。我正在使用 Python 2.7 32 位中的 pypyodbc 和 pandas.io.sql 连接到 Access DB。以下代码与漂亮的任何表名 (table_name) 完美配合:

var = psql.read_sql("SELECT * FROM table_name;",conn)
Run Code Online (Sandbox Code Playgroud)

除了名为Currency的表。我什至可以调用表Currenc并且代码有效,没问题。一旦我在最后添加y,我就会得到:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 421, in read_sql
coerce_float=coerce_float, parse_dates=parse_dates)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1046, in read_sql
cursor = self.execute(*args)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1041, in execute
raise_with_traceback(ex)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1030, in execute
cur.execute(*args)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 1605, in execute
self.execdirect(query_string)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 1631, in …
Run Code Online (Sandbox Code Playgroud)

python ms-access pandas pypyodbc

2
推荐指数
1
解决办法
7961
查看次数

pypyodbc:OPENJSON关键字"WITH"附近的语法不正确

我正在尝试在Python脚本中使用OPENJSON将一些基本JSON导入SQL数据库.我最初尝试使用更复杂的JSON文件,但为了这篇文章简化了它.这就是我所拥有的:

sql_statement = "declare @json nvarchar(max) = '{\"name\":\"James\"}'; SELECT * FROM OPENJSON(@json) WITH (name nvarchar(20))" 
cursor.execute(sql_statement)
cursor.commit()
connection.close()
Run Code Online (Sandbox Code Playgroud)

我收到的错误:

pypyodbc.ProgrammingError:(u'42000',u"[42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]关键字'with'附近的语法不正确.如果此语句是公用表表达式,则为xmlnamespaces子句或更改跟踪上下文子句,前一个语句必须以分号结束.")

我为什么看到这个错误的想法?我成功地使用相同的pypyodbc /数据库配置执行其他SQL查询.

python sql sql-server json pypyodbc

2
推荐指数
1
解决办法
1002
查看次数

Python - SQL语句中的特殊字符

我使用ODBC(Python ODBC模块)连接到MS Access.代码的一部分将一些值放入DB中.看起来类似于:

for item in changes:
  format_str = """INSERT INTO changes (short_description) VALUES ('{short_description}');"""
  sql_command = format_str.format(short_description =item.short_description)
  cursor.execute(sql_command)
  cursor.commit()
Run Code Online (Sandbox Code Playgroud)

问题是它返回syttaxt错误:

pypyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 
Run Code Online (Sandbox Code Playgroud)

我发现这是因为在一个案例中我有像这样的short_description:

一旦分派到另一个组,服务请求状态不会更改为"打开"

OPEN之后的问题是"'".

为您提供全面的图片.实际上我看到的字符串是这样的:

一旦分派到另一个组,服务请求状态不会更改为"OPEN"

带有"\"的字符串我是从提供数据的应用程序的API获取的.它为转义字符串添加了"\",但并非随处可见.

问题是 - 最简单的解决方法是什么?从理论上讲,我可以替换\删除不需要的标志,但万一我想保留原样呢?

对于任何其他情况,一切正常.

python pypyodbc

2
推荐指数
1
解决办法
495
查看次数

使用pypyodbc,pymssql和pyodbc的优点和缺点是什么?

我知道Pypyodbc是Pyodbc的较新版本。之前有人问过这两个之间的比较问题,但我想将Pymssql添加到混合中。

python sql-server pyodbc pymssql pypyodbc

2
推荐指数
1
解决办法
438
查看次数

将 Django 连接到 Microsoft SQL 数据库

我想将我的 django 应用程序连接到 MS-SQL Server 2014 数据库。我写了这段代码来建立连接。

 DATABASES = {
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'HOST':'DESKTOP-6UNRAN0',
    'PORT':'1433',
    'NAME': 'MOVIE',
    'COLLATION' : '',

  }
}
Run Code Online (Sandbox Code Playgroud)

我已经安装了 sql_server.pyodbc

 pip install django-pyodbc-azure
Run Code Online (Sandbox Code Playgroud)

如文档https://pypi.org/project/django-pyodbc-azure/ 中所述。我仍然收到错误

django.db.utils.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')

django django-pyodbc sql-server-2014 pypyodbc django-mssql-backend

2
推荐指数
1
解决办法
5118
查看次数