我正在努力想出这个问题.我第一次使用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很陌生,并且在这个当前项目之前还没有真正与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) 在 _mssql.connect 中,有一个添加应用程序名称的选项。我想知道 pypyodbc.connect 是否有类似的东西。
谢谢。
我目前正在运行 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)
任何帮助表示赞赏。
如何在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 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脚本中使用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查询.
我使用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获取的.它为转义字符串添加了"\",但并非随处可见.
问题是 - 最简单的解决方法是什么?从理论上讲,我可以替换\删除不需要的标志,但万一我想保留原样呢?
对于任何其他情况,一切正常.
我知道Pypyodbc是Pyodbc的较新版本。之前有人问过这两个之间的比较问题,但我想将Pymssql添加到混合中。
我想将我的 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