标签: pyodbc

pyodbc - 在容器内运行应用程序时出错

我有一个使用 mssql 的 python 应用程序 - 我正在尝试 pyodbc,而不是使用 pymssql。在 Windows 本地计算机中运行应用程序时似乎没有问题。在打包为容器的开发环境中部署应用程序时,我看到以下错误。

from pyodbc import Error
2017-04-14T13:58:28.858638588Z ImportError: Error loading shared library libodbc.so.2: No such file or directory (needed by /usr/local/lib/python3.5/site-packages/pyodbc.cpython-35m-x86_64-linux-gnu.so)
Run Code Online (Sandbox Code Playgroud)

该文档要求我安装数据库驱动程序和 pyodbc。

初始检查对我来说看起来不错 - 图像 共享对象依赖项符号链接

python pyodbc

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

无法在 Apple Silicon 上导入 pyodbc - 未找到符号:_SQLAllocHandle

我目前正在使用 Apple Silicon 的 2021 款 MacBook Pro 上开发 Python (3.8) 项目。最终,目标是使用 Apple 的 Tensorflow fork 从 Azure SQL DB 读取的数据构建 ML 模型。因此,我正在本地 Apple Silicon 包上开发该项目 - 不使用 Rosetta。

当我尝试导入 pyodbc 包(4.0.30)以连接到我的数据库时,出现了问题。我不断收到以下错误

  File "<stdin>", line 1, in <module>
ImportError: dlopen({myvenv}/lib/python3.8/site-packages/pyodbc.cpython-38-darwin.so, 2):
Symbol not found: _SQLAllocHandle
  Referenced from: {myvenv}/lib/python3.8/site-packages/pyodbc.cpython-38-darwin.so
  Expected in: flat namespace
 in {myvenv}/lib/python3.8/site-packages/pyodbc.cpython-38-darwin.so
Run Code Online (Sandbox Code Playgroud)

然而,如果我使用 Rosetta 做同样的事情,一切都会正常。我找不到任何其他线程描述类似的行为。

有谁知道如何解决这个问题?

python pyodbc apple-silicon apple-m1

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

无法使用pyodbc创建访问表

我正在尝试使用pyodbc使用python在MS Access DB中创建表,但是当我运行我的脚本时,没有创建表并且没有给出错误.我的代码:

#!/usr/bin/env python
import pyodbc

con = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=Z:\Data\Instruments\testDB.accdb; Provider=MSDASQL;')
cur = con.cursor()
string = "CREATE TABLE TestTable(symbol varchar(15), leverage double, shares integer, price double)"
cur.execute(string)
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?

python ms-access pyodbc

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

使用putty私钥、sqlalchemy和pyodbc从linux环境连接到sql server

您好,我正在尝试从 linux(ubuntu 服务器)的 sql 服务器读取数据帧。文件(gscm.ppk)中有管理密钥

我使用以下格式连接到 sql server:

import urllib.parse
import pandas as pd
import sqlalchemy as sa

params = urllib.parse.quote_plus(
    "DRIVER={SQL Server Native Client 11.0};"
    "SERVER=dagger;"
    "DATABASE=test;"
    "UID=ubuntu;"
)
engine = sa.create_engine("mssql+pyodbc:///?odbc_connect={}".format(params))
df = pd.read_sql("SELECT * FROM ROBALS", engine)

Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('01000', "[01000] [unixODBC] 
[Driver Manager]Can't open lib 'SQL Server' : file not found (0) 
(SQLDriverConnect)")
(Background on this error at: https://sqlalche.me/e/14/dbapi)
Run Code Online (Sandbox Code Playgroud)

我已经下载了Ubuntu 20.04附带的驱动程序

python sql-server ubuntu pyodbc

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

我可以在与pyodbc和MS SQL Server的一个连接上使用多个游标吗?

我在python 2.6上使用pyodbc连接到Microsoft SQL Server 2005.我打开一个连接,创建几个游标:

c1 = connection.cursor()
c2 = connection.cursor()
Run Code Online (Sandbox Code Playgroud)

然后对第一个游标运行查询.

c1.execute("select * from foo")
Run Code Online (Sandbox Code Playgroud)

现在我在第二个游标上运行一个查询:

c2.execute("select * from bar")
Run Code Online (Sandbox Code Playgroud)

...我收到一个错误:"连接忙于另一个hstmt的结果."

我做了之后c1.fetchall()或者c1.close()我可以使用c2.

我的问题是:为什么我甚至被允许在连接上创建多个游标,如果我只允许一次使用一个游标,并且同一个游标总是可以重用?并且,如果我想为另一个查询的结果的每一行运行查询,如下所示:

for x in c1.execute(...):
    for y in c2.execute(...):
Run Code Online (Sandbox Code Playgroud)

我真的必须创建到同一数据库的多个连接?

python sql-server pyodbc

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

Debian Linux上的pyodbc/FreeTDS/unixODBC:TDS版本的问题

我在Debian Lenny(5.0.7)上成功使用pyodbc时遇到了一些麻烦.具体来说,我似乎无法获取NVARCHAR值(不是SQL Server专家,所以对我很容易:)).

大多数传统查询都可以.例如,table1中的行数产生

cursor.execute("SELECT count(id) from table1")
<pyodbc.Cursor object at 0xb7b9b170>
>>> cursor.fetchall()
[(27, )]
Run Code Online (Sandbox Code Playgroud)

就像完全转储ID一样

>>> cursor.execute("SELECT id FROM table1")
<pyodbc.Cursor object at 0xb7b9b170>
>>> cursor.fetchall()
[(0.0, ), (3.0, ), (4.0, ), (5.0, ), (6.0, ), (7.0, ), (8.0, ), (11.0, ), (12.0, ), (18.0, ), (19.0, ), (20.0, ), (21.0, ), (22.0, ), (23.0, ), (24.0, ), (25.0, ), (26.0, ), (27.0, ), (28.0, ), (29.0, ), (32.0, ), (33.0, ), (34.0, ), (35.0, ), (36.0, ), …
Run Code Online (Sandbox Code Playgroud)

unixodbc pyodbc freetds sql-server-2008

15
推荐指数
3
解决办法
4202
查看次数

SQL Server,Python和OS X.

将OS X上运行的Python与基于云的SQL Server数据库连接的好方法是什么?

编辑:

使用pyodbc我收到此错误:

>>> import pyodbc
>>> cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=adsf.com;DATABASE=asdf;UID=asdf;PWD=asdf')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pyodbc.Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen({SQL Server}, 6): image not found (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)

python sql-server macos pyodbc

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

基本的pyodbc批量插入

在python脚本中,我需要在一个数据源上运行查询,并将该查询中的每一行插入到不同数据源的表中.我通常使用带有tsql链接服务器连接的单个insert/select语句来执行此操作,但是我没有与此特定数据源的链接服务器连接.

我找不到一个简单的pyodbc示例.这是我怎么做的,但我猜测在循环中执行一个插入语句非常慢.

result = ds1Cursor.execute(selectSql)

for row in result:
    insertSql = "insert into TableName (Col1, Col2, Col3) values (?, ?, ?)"
    ds2Cursor.execute(insertSql, row[0], row[1], row[2])
    ds2Cursor.commit()
Run Code Online (Sandbox Code Playgroud)

使用pyodbc插入记录有更好的批量方式吗?或者这是一种相对有效的方法来做到这一点.我正在使用SqlServer 2012,以及最新的pyodbc和python版本.

python sql-server pyodbc

15
推荐指数
2
解决办法
3万
查看次数

pyodbc比pypyodbc有任何设计优势吗?

我知道pyodbc是一个较旧的项目,可能更具特色和强大,但它的设计是什么(基于编译的C代码的组件),这会使它优于纯Python实现,如pypyodbc

我做了很多ETL工作,并且正在考虑从Linux/Jython/JDBC方法切换到Windows/Cygwin/Python/ODBC方法.

python odbc etl pyodbc pypyodbc

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

使用插入时如何获取 IDENTITY 值 ... OUTPUT with pyodbc

我正在尝试使用OUTPUT. 但是,我遇到了 HY010 错误。以下查询/代码是我使用的:

string = """
         SET NOCOUNT ON;
         DECLARE @NEWID TABLE(ID INT);

         INSERT INTO dbo.t1 (Username, Age)
         OUTPUT inserted.id INTO @NEWID(ID)
         VALUES(?, ?)

         SELECT ID FROM @NEWID
         """

cursor.execute(string, "John Doe", 35)
cursor.commit()
id = cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)

最后一行id = cursor.fetchone()[0]导致 HY010 错误(见下文)。任何建议将不胜感激!

pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC SQL Server Driver]Function sequence error (0) (SQLFetch)')
Run Code Online (Sandbox Code Playgroud)

python sql-server pyodbc

14
推荐指数
2
解决办法
7123
查看次数