标签: pyodbc

迭代大型列表时Python很慢

我目前正在使用pyodbc从数据库中选择一个大的行列表.然后将结果复制到一个大型列表,然后我尝试迭代列表.在我放弃python并尝试在C#中创建它之前,我想知道是否有一些我做错了.

clientItems.execute("Select ids from largetable where year =?", year);
allIDRows = clientItemsCursor.fetchall() #takes maybe 8 seconds.

for clientItemrow in allIDRows:
    aID = str(clientItemRow[0])
    # Do something with str -- Removed because I was trying to determine what was slow
    count = count+1
Run Code Online (Sandbox Code Playgroud)

更多信息:

  • for循环当前以每秒约5个循环运行,这对我来说似乎非常慢.
  • 选择的总行数为~489,000.
  • 它运行的机器有很多RAM和CPU.它似乎只运行一个或两个核心,而ram是1.72GB的4GB.

谁能告诉我什么是错的?脚本运行这么慢吗?

谢谢

python sql database pyodbc

10
推荐指数
1
解决办法
6939
查看次数

麻烦与UnixODBC,FreeTDS和PyODBC

我很难让所有这三个人和睦相处.我想我会列出所有各种配置,以及测试代码,看看是否有一双新鲜的眼睛可以实现我的愚蠢.

我正在运行12.04 Ubuntu Server,我正在尝试连接到MSSQL Server 2008并最终使用它与PyODBC.

但是,刚刚投入

tsql -S T2 -U Foo -P Bar
Run Code Online (Sandbox Code Playgroud)

我明白了

1>
2>
3>
4>
5>
6>
7>
8>
9>
10>
11>
Run Code Online (Sandbox Code Playgroud)

等等.

无论如何,如果有人能够提供帮助(如果你能让我清除这种阴霾,我将永远感激不尽),这是我目前的配置.

这是我的/etc/odbc.ini

[ODBC Data Sources]
odbcname     = MySQL
T2           = MSSQL

[odbcname]
Driver       = /usr/lib/odbc/libmyodbc.so
Description  = MyODBC 3.51 Driver DSN
SERVER       = Foobar
PORT         = 3306
USER         = Foo
Password     = Bar
Database     = Foobar
OPTION       = 3
SOCKET       =

[T2]
Driver       = FreeTDS
Description  = ODBC connection via FreeTDS
SERVER       = …
Run Code Online (Sandbox Code Playgroud)

sql-server ubuntu unixodbc pyodbc freetds

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

PYODBC中的函数序列错误

pyodbc用来连接数据库并从中提取某些数据.

这是我的代码:

con = pyodbc.connect("driver={SQL Server};server= MyServer;database= MyDatabase;trusted_connection=true") 

cursor = con.cursor()

SQL_command = """
                      SELECT RowID = ISNULL
                      (
                          (
                              SELECT TOP 1 RowID
                              FROM [MyDatabase].[admin].[MyTable] 
                              WHERE [queue] = ? and processed IS NULL
                          )
                          ,-1
                      )
                  """

cursor.execute(SQL_command, queueNumber)

cursor.commit()

con.commit()

result_set = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

运行上面的代码后出现以下错误:

pyodbc.Error:('HY010','[HY010] [Microsoft] [ODBC SQL Server驱动程序]函数序列错误(0)(SQLFetch)')

我可以知道是什么导致了这样的问题,我该如何解决?

谢谢.

python sql pyodbc

10
推荐指数
1
解决办法
5078
查看次数

SQL Update语句但使用pyodbc

我使用pyodbc驱动程序使用SQL连接到microsoft访问表.有谁知道如何更换此表中的字段?我有关于删除行然后将行放回,但由于访问中的自动编号,这将更改主键.

我有这个插入Progress表:

        cnxn = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=C:\\Users\\...............(file location)')
        cursor = cnxn.cursor()
        cursor.execute("insert into Progress(CockpitDrill,Mirrors,MoveOff,TurnLeft) values (?,?,?,?)",cockpit,mirrors,moveOff,turnLeft,)
        cnxn.commit()
Run Code Online (Sandbox Code Playgroud)

那么我该如何替换这些字段呢?假设我想将CockpitDrill从'2'改为'3',(它们都是字符串).

任何帮助将不胜感激.

python sql pyqt pyodbc pyqt4

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

如何使用pyodbc将MS Access连接到Python

我在使用pyodbc连接访问数据库时遇到问题.我已经看到其他示例代码看起来与我的工作相同:

import pyodbc 
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=PYODBC.accdb;UID=me;PWD=pass')
cursor = cnxn.cursor()

cursor.execute("SELECT Forename FROM Student")
row = cursor.fetchone()
if row:
    print(row)
Run Code Online (Sandbox Code Playgroud)

我的机器运行在Windows 7家庭高级64位.我有Microsoft Office 2010; 32位我正在运行python 3.3; 32位

我不知道它有什么问题,我甚至没有收到错误消息,shell打开,但没有任何反应.任何帮助是极大的赞赏

python ms-access pyodbc

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

64 位 pyodbc 是否可以与 32 位 MS Access 数据库通信?

我正在使用运行 python v3 的 64 位 python anaconda v4.4。我有 MS Access 2016 32 位版本。我想使用 pyodbc 让 python 与 Access 交谈。是否可以使用 64 位 pyodbc 与 MS Access 2016 32 位数据库通信?

我已经有许多使用 64 位 python anaconda 运行的 python 应用程序。降级到 32 位 python 将是一件苦差事。

python ms-access odbc pyodbc 32bit-64bit

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

PYODBC - 未找到数据源名称且未指定默认驱动程序

import pyodbc
connection = pyodbc.connect('Driver = {SQL Server};Server=SIWSQL43A\SIMSSPROD43A;'
                            'Database=CSM_reporting;Trusted_Connection=yes;')
Run Code Online (Sandbox Code Playgroud)

connection = pyodbc.connect('Driver = {SQL Server}; Server = SIWSQL43A\SIMSSPROD43A;'pyodbc.Error:('IM002','[IM002] [Microsoft] [ODBC Driver Manager]未找到数据源名称且没有默认值驱动程序指定(0)(SQLDriverConnect)')

python sql pyodbc

10
推荐指数
6
解决办法
5万
查看次数

在Mac上使用iODBC连接到MS SQL Server

我正在尝试使用iODBC从我的Mac开发机器连接到Microsoft SQL Server.无论我做什么,我都会收到Unable to connect to data sourceFreeTDS驱动程序的错误消息.在查阅了各种手册,博客文章和StackOverflow问题之后,我就完蛋了.

我正在使用Mac OS X 10.7.4,通过Homebrew安装FreeTDS版本0.91.这是我正在做的事情:

$ brew install freetds
$ mkvirtualenv odbc
$ workon odbc
$ pip install pyodbc

$ tsql -H localhost -U mydbusername -P mydbpassword -p 1433 
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> quit
Run Code Online (Sandbox Code Playgroud)

以上连接和工作,但:

$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008

Enter ODBC connect string (? shows list): driver={TDS};server=localhost;uid=mydbusername;pwd=mydbpassword;database=mydbname
1: SQLDriverConnect = [FreeTDS][SQL Server]Unable …
Run Code Online (Sandbox Code Playgroud)

sql-server macos pyodbc freetds iodbc

9
推荐指数
1
解决办法
5199
查看次数

使用pypyodbc连接到SQL Server

我需要使用Python 2.7将unicode发送到SQL Server.我用pymssql失败了.我现在正努力pypyodbc工作(而不是pyodbc),因为它提供了工作的unicode示例.问题是示例中的连接字符串看起来不像我认识的任何东西.我看了这个,经过一些试验和错误,构造了这个字符串:

conn = pypyodbc.connect("DRIVER={SQL Server};SERVER='MyServer';UID='me';PWD='MyPassword';DATABASE='db'")
Run Code Online (Sandbox Code Playgroud)

重新DatabaseError关注连接字符串:

C:\Anaconda\lib\site-packages\pypyodbc.pyc in __init__(self, connectString, autocommit, ansi, timeout, unicode_results, readonly, **kargs)
---> 2 conn = pypyodbc.connect("DRIVER={SQL Server};SERVER='MyServer';UID='me';PWD='password';DATABASE='db'")

C:\Anaconda\lib\site-packages\pypyodbc.pyc in __init__(self, connectString, autocommit, ansi, timeout, unicode_results, readonly, **kargs)
---> 2273         self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly)

C:\Anaconda\lib\site-packages\pypyodbc.pyc in connect(self, connectString, autocommit, ansi, timeout, unicode_results, readonly)
---> 2321         check_success(self, ret)

C:\Anaconda\lib\site-packages\pypyodbc.pyc in ctrl_err(ht, h, val_ret, ansi)
---> 919                 raise DatabaseError(state,err_text)

DatabaseError: (u'08001', u'[08001] …
Run Code Online (Sandbox Code Playgroud)

sql-server pyodbc python-2.7 pypyodbc

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

在Windows 7上无法使用pyodbc建立与sql-server的连接

我在Windows 7上使用ActivePython 2.7.2.5.

在尝试使用以下代码使用pyodbc模块连接到sql-server数据库时,我会收到后续的Traceback.关于我做错了什么的任何想法?

码:

import pyodbc
driver = 'SQL Server'
server = '**server-name**'
db1 = 'CorpApps'
tcon = 'yes'
uname = 'jnichol3'
pword = '**my-password**'

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes')
cursor = cnxn.cursor()
cursor.execute("select * from appaudit_q32013")
rows = cursor.fetchall()
for row in rows:
    print row
Run Code Online (Sandbox Code Playgroud)

追溯:

Traceback (most recent call last):
  File "pyodbc_test.py", line 9, in <module>
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes')
pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC …
Run Code Online (Sandbox Code Playgroud)

python sql sql-server pyodbc activepython

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