标签: pyodbc

无法在Mac上导入pyodbc

我无法导入pyodbc我的Macbook Pro(运行Mac OS X 10.10.5)和python版本2.7.10.我曾经pip得到它,我有最新版本(3.0.10).它给了我以下错误:

$ python
Python 2.7.10 (default, Jul 14 2015, 19:46:27) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyodbc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.7/site-packages/pyodbc.so, 2): Symbol not found: _SQLAllocHandle
  Referenced from: /Library/Python/2.7/site-packages/pyodbc.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/pyodbc.so
Run Code Online (Sandbox Code Playgroud)

我在过去的几个月里尝试了几件事无济于事,包括自己构建(以及(重新)安装iodbcunixodbc沿途).

其中一个奇怪的事情是我尝试使用的其他python数据库包(例如sqlalchemy,pypyodbc等)也没有出于各种原因和类似原因.这让我怀疑我的ODBC驱动程序或库有一些潜在的问题,但我不知道如何诊断它.

我正在共享代码环境中工作,团队的其他成员pyodbc通过Windows 使用,我现在真的需要这个.任何帮助或建议将不胜感激!


**在回复mauro的答案时添加了更多详细信息.注意,下面的第二次更新改变了一些**

以下是我应该包含在原始问题中的更多细节. …

python macos odbc pyodbc python-2.7

8
推荐指数
1
解决办法
6632
查看次数

如何使用pyodbc连接到vertica

我已经阅读了有关该文件odbc.iniVertica文档iODBC 文档.我也看到了一个带有相同错误的问题,但无法让连接字符串按照上一个问题的答案中的建议工作.

我目前拥有的:

/etc/odbcinst.ini

[HPVertica]
Description = HP Vertica ODBC Driver
Driver = /opt/vertica/lib64/libverticaodbc.so

/etc/odbc.ini

[ODBC Data Sources]
VerticaDB1 = db1 database on HP Vertica

[VerticaDB1]
Description = db1 database on HP Vertica
Driver = HPVertica
Database = db1
Servername = 10.0.0.67
UID = dbadmin
PWD = 
Port = 5433
Locale = en_GB

[ODBC]
Threading = 1

~/.odbc.ini

[DEFAULT]

Driver = VerticaDB1

测试用 isql

[root@ip-10-0-0-67 /]# echo "select 1;" | isql …

python unixodbc pyodbc vertica

7
推荐指数
1
解决办法
8385
查看次数

SQL 服务器、pyodbc 和死锁错误

我有一些代码可以将 Scrapy 抓取的数据写入 SQL 服务器数据库。数据项包括一些基本的酒店数据(名称、地址、评级...)和一些带有相关数据(价格、入住率等)的房间列表。可以有多个 celery 线程和多个服务器运行此代码并同时写入数据库不同的项目。我遇到死锁错误,例如:

[Failure instance: Traceback: <class 'pyodbc.ProgrammingError'>: 
('42000', '[42000] [FreeTDS][SQL Server]Transaction (Process ID 62)
 was deadlocked on lock resources with another process and has been 
chosen as the deadlock victim. Rerun the transaction. (1205) (SQLParamData)')
Run Code Online (Sandbox Code Playgroud)

实际执行插入/更新的代码示意如下:

1) Check if hotel exists in hotels table, if it does update it, else insert it new. 
   Get the hotel id either way. This is done by `curs.execute(...)`

2) Python loop over the hotel rooms scraped. For each room …
Run Code Online (Sandbox Code Playgroud)

sql-server parallel-processing pyodbc scrapy celery

7
推荐指数
1
解决办法
5524
查看次数

使用python将excel文件中的数据导入SQL Server

我发现了一些其他问题,这些问题与我得到的问题有类似的错误,但无法根据答案弄清楚如何解决这个问题。我正在尝试在 python 的帮助下将一个 excel 文件导入 SQL Server。这是我写的代码:

import pandas as pd
import numpy as np
import pandas.io.sql
import pyodbc
import xlrd

server = "won't disclose private info"
db = 'private info'
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + Server + ';DATABASE=' + 
db + ';Trusted_Connection=yes')

cursor = conn.cursor()
book = xlrd.open_workbook("Daily Flash.xlsx")
sheet = book.sheet_by_name("Sheet1")

query1 = """CREATE TABLE [LEAF].[MK] ([LEAF][Lease_Number] varchar(255), 
[LEAF][Start_Date] varchar(255), [LEAF][Report_Status] varchar(255), [LEAF] 
[Status_Date] varchar(255), [LEAF][Current_Status] varchar(255), [LEAF] 
[Sales_Rep] varchar(255), [LEAF][Customer_Name] varchar(255),[LEAF] 
[Total_Finance] varchar(255),
[LEAF][Rate_Class] varchar(255) ,[LEAF][Supplier_Name] varchar(255) …
Run Code Online (Sandbox Code Playgroud)

python xlrd pyodbc python-3.x

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

从 Windows WSL 使用 PYODBC

我正在使用 Windows WSL 并尝试配置 python 以连接到 MSSQL

我已经安装了https://docs.microsoft.com/en-us/sql/connect/python/pyodbc/step-1-configure-development-environment-for-pyodbc-python-development

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server

但是当我按照https://docs.microsoft.com/en-us/sql/connect/python/pyodbc/step-3-proof-of-concept-connecting-to-sql-using-pyodbc运行示例连接时我收到此错误:

Traceback (most recent call last):
  File "users.py", line 9, in <module>
    cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
pyodbc.Error: ('01000', u"[01000] [unixODBC][Driver Manager]Can't open lib '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1' : file not found (0) (SQLDriverConnect)")
Run Code Online (Sandbox Code Playgroud)

文件已存在:

 khinester@win ? /c/Users/norman/Projects/sysadmin ? ? master ? ?1 ?2 ? ls /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1                                         ? ? ? 5619 ? 15:52:53
-rwxr-xr-x 1 root root 18M Jul  3  2018 /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
Run Code Online (Sandbox Code Playgroud)

非常感谢有关如何解决此问题的任何建议

python pyodbc windows-subsystem-for-linux

7
推荐指数
0
解决办法
1412
查看次数

[Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0) (SQLDriverConnect)')

我无法使用 python 从 Unix 连接到 SQL 服务器。

我将无法将驱动程序从 ODBC Driver 17 for SQL Server 替换为 ODBC Driver 13 for SQL Server,如Pyodbc:由于其他依赖项导致的登录超时错误中所述。

有人可以建议一个替代方案吗?

代码:

import sqlalchemy as sa

from urllib import parse as db_parse

from sqlalchemy import event

params = db_parse.quote_plus(r"DRIVER={ODBC Driver 17 for SQL Server};SERVER='server,port';DATABASE=DB_NAME;username=USER_ID;password=PWD;Trusted_Connection=yes")

engine = sa.create_engine('mssql+pyodbc:///?odbc_connect={}'.format(params))

connection = engine.connect()
Run Code Online (Sandbox Code Playgroud)

错误:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/e3q8)
Run Code Online (Sandbox Code Playgroud)

python sql-server pyodbc

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

pyodbc操作错误08001 ssl安全错误

我正在尝试使用 pyodbc 通过以下 python 脚本从我的笔记本电脑(在 Windows 10 上)连接到 MS SQL Server 2016 上的数据库,并计划将代码部署在 Linux RHEL 6.4 服务器中。

conn=pyodbc.connect('Driver={SQL Server};'
                'Server=DB_Instance;'
                'Database=DB_Name;'
                'UID=user_name;'
                'PWD=password;'
                'Trusted_Connection=no;');
Run Code Online (Sandbox Code Playgroud)

在我的笔记本电脑上,SQL Server(版本:10.00.17763.01)和SQL Server Native Client 11.0(版本:2011.110.7493.04)已经可用。

从我的笔记本电脑执行 python 脚本时,我收到以下错误消息。

pyodbc.operationalError: ('08001', '[08001] [Microsoft] [ODBC SQL Server 驱动程序][DBNETLIB]SSL 安全错误 (18) (SQLDriverConnect); [08001] [Microsoft] [ODBC SQL Server 驱动程序][DBNETLIB] ConnectionOpen (SECDoClientHandshake())。(772)')

根据组织标准,在网络中安装 SQL Server 的 Windows 服务器上禁用 TLS 1.0。由于我通过 python 脚本访问数据库,因此我们无法暂时启用 TLS 1.0。我正在寻找一个方向。任何帮助是极大的赞赏!!

python sql-server odbc pyodbc

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

字符串数据,在使用 pyodbc 快速执行时右截断

我正在挣扎

pyodbc.ProgrammingError:('字符串数据,右截断:长度636缓冲区510','HY000')

executeMany()与 一起使用时__crsr.fast_executemany = True。当我删除这条线时,一切正常。

我正在使用pyodbc( 4.0.30)MSSQLODBC Driver 17 for SQL Server.

我的数据库表看起来有 4 列,每一列都是varchar(255).

我已经添加了这一行:crsr.setinputsizes([(pyodbc.SQL_WVARCHAR, 50, 0)])并添加UseFMTOnly=yes到连接字符串,但它不起作用。

你们能帮我吗?我已经厌倦了。

python pyodbc

7
推荐指数
1
解决办法
8141
查看次数

与 pyodbc 的通信链路失败

import pyodbc
import time
connection = pyodbc.connect(..............)
cursor = connection.cursor()
while True:
    time.sleep(1)
    cursor.execute(INSERT_QUERY)
    cursor.commit()
Run Code Online (Sandbox Code Playgroud)

这样可行。但突然我得到了一个例外pyodbc.Error: ('08S01', '[08S01] [Microsoft][ODBC SQL Server Driver]Communication link failure (0) (SQLExecDirectW)')

这是为什么?为什么链接突然断开?我该如何处理该异常并重新连接?我该如何解决这个问题?

python pyodbc

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

将结果集发送到 Flask 视图时出现“行不是 JSON 可序列化”错误

我正在尝试将 pyodbc 查询的结果发送到我的视图,但我得到了TypeError: Object of type Row is not JSON serializable.

假设我在 SQL Server 中有一个这样的表:

第 1 列 列2 第 3 列
1 值1 值2
2 值3 值4

我通过 pyodbc 查询它并将数据传递到视图,如下所示:

return render_template(
    'index.html'
    ,data={
        'foor':'bar'
        ,'rows':db.execute(
            'SELECT * '
            'FROM [' + table.schema_name + '].[' + table.table_name + ']'
        ).fetchall()
    }
)
Run Code Online (Sandbox Code Playgroud)

如果我打印{{ data.rows }}我想要有[[1,"val1","val2"],[2,"val3","val4"]],但我却得到了[(Decimal('1'), 'val1', 'val2'), (Decimal('2'), 'val3', 'val4')]

如果我print(type(data.rows))在控制器中,我会得到<class 'list'>.

尝试在视图中将其转换为 JSON,{{ data.rows|tojson }} …

sql-server json pyodbc flask

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