问题标签 [pyodbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2688 浏览

python - 使用 Pyodbc + UnixODBC + FreeTDS 设置连接设置

我有一个使用 Pyodbc、UnixODBC 和 FreeTDS 的设置,但是在某个地方设置了一些选项,我不知道在哪里。根据 SQL Server Management Studio,我的程序在打开连接时会发送一些设置:

但我需要一组不同的设置:

有什么办法可以改变这个吗?如果我不能用我当前的设置来做到这一点,我是否可以在 Python 中使用任何其他库来让我改变它(最好使用 Python 数据库 API)?

更改数据库中的设置不是一个选项,因为我有很多其他项目使用我当前的设置。

解决了:

马克的回答是正确的,但我无法让它与 FreeTDS/UnixODBC 一起使用。将该信息添加到我的 odbc.ini 文件中效果很好:

0 投票
2 回答
3108 浏览

python - 如何从 Python、PyODBC、SQL Returns 中去除“()”?

我抓住了一堆我需要用 Python 和 PyODBC 更新的 SQL ID:

我有第二段代码可以更新 ID:

问题是当我查看之前在 Python 中抓取的 ID 时,我得到:

[(1016, ), (1017, ), (1019, ), (1020, ), (1021, ), (1025, ), (1026, ), (1027, ), (1029, ), (1048, ) , (1049, )]

或者

(1020, )

我只需要这个数字,这样我就可以运行脚本的第二部分:

部分。我试过:

它给了我:

SELECT ID 从 One.dbo.Two WHERE ID = (1049, )
从 One.dbo.Two SELECT ID WHERE ID = (1048, )
等...

我试过了:

我得到了:

'1017, )'

如何从 ID 中删除字符以便重复使用 ID?

谢谢,

阿德里安

0 投票
2 回答
4134 浏览

python - 在 Python ODBC 中使用 Microsoft Access SQL 运算符

短版:当我尝试通过 ODBC 使用 Access 的 DatePart 功能时,无法解决。

更长的版本:

我有一个 Microsoft Access 查询,它返回带有时间戳和分数的行。我想按排序,然后按分数排序——实际上是当天的高分表。

为了获得更好的功能,我使用该DatePart功能从时间戳中提取年、月和日中的每一个,ORDER BY然后是分数。

在 Microsoft Access 中,查询效果很好。

但是,当我pyodbc用来访问相同的查询时,ODBC 驱动程序被 DatePart 函数难住了,并认为它是缺少参数的名称。

令我吃惊的是,即使我隐藏了 DatePart 函数,通过创建一个新的 HighScore 查询,然后SELECT * FROM HighScore,它仍然抱怨找不到参数。显然,查询的 SQL 是在该过程的后期才得到解决的。

我的问题是:

  • 如何解析 SQL 中的 DatePart 函数以允许 Access 运行它,或者
  • 什么是通过 ODBC 按时间戳的日期部分排序的正确方法?

添加了附加信息:

看起来有点矫枉过正,但这里有一些代码:

结果如下:

0 投票
6 回答
37678 浏览

python - pyodbc 和 mySQL

我无法使用 pyodbc 连接到 mySQl db。

这是我的脚本的一个片段:

我在 pyodbc.connect() 行收到此错误:

pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')

我对这个错误(以及一般的 Python 脚本)还有另一个问题。当我将其作为脚本运行时,它会静默失败(我期待堆栈跟踪)。我必须手动输入每一行才能找到错误发生的位置。

我现在有点懒惰(没有异常处理) - 没有异常处理的 Python 脚本的这种正常行为是否会静默失败?

[编辑]

我没有使用 mysqldb,因为我已经在使用 pyodbc 从另一个源(MS Access)提取我的数据。好吧,这不是一个很好的理由 - 但我已经在努力解决 pyodbc 问题,而且我真的不想为了“一次性”工作而不得不与另一个库/模块/包(无论它在 Python 中调用什么)搏斗。我只想将我的数据从 Windows 环境中的各种数据源移动到 Linux 上的 mySQl。一旦在 Linux 上,我将回到 terra Firma。

那就是那里的整个“脚本”。我刚刚将上面的代码保存到一个扩展名为 .py 的文件中,然后在命令行运行 python myscript.py。我在我的 XP 机器上运行它

0 投票
5 回答
4705 浏览

python - Windows中的Python:使用pyodbc的大量插入导致内存泄漏

我正在尝试在 Windows 上使用 python 填充 MS SQL 2005 数据库。我正在插入数百万行,到了 700 万行,我使用了近 1 GB 的内存。下面的测试每插入 100k 行会占用 4 兆内存:

破解解决方案:我最终使用多处理模块生成了一个新进程来返回内存。仍然对为什么以这种方式插入行会消耗这么多内存感到困惑。有任何想法吗?

0 投票
1 回答
6926 浏览

python - Python:将excel文件添加到访问数据库

我正在使用 pyodbc 访问访问(accdb)文件。我想以编程方式将 excel 工作簿添加到访问数据库中,但找不到执行此操作的 API。这是我当前的代码:

我应该如何将 excel 文件 (IA_2006.xls) 中的数据导入 IA.accdb?

0 投票
3 回答
12038 浏览

python - 使用 PyODBC 选择表中的列名

我正在编写一个 Python 程序,它使用 PyODBC 从 Microsoft Access mdb 文件中选择一些数据。

我需要发现几个不同表的列名。在 SQL Server 中,这可以通过使用类似的查询来完成

但该查询在 Access 中不起作用。和

我可以获得非链接表名的列表,但 MSysObject 似乎不包含列名列表。

有没有办法使用 SQL 来获取 Access 数据库中表的列名?

0 投票
4 回答
2569 浏览

sql-server - 在 SQL Server 2008 上使用 sqlalchemy 等待数据库还原完成

我正在尝试在开发过程中自动化我的数据库恢复,在 SQL Server 2008 上使用 TSQL,使用带有 pyodbc 的 sqlalchemy 作为传输。

我正在执行的命令是:

"""创建数据库数据库名称

恢复数据库 dbname FROM DISK='C:\Backups\dbname.bak' WITH REPLACE,MOVE 'dbname_data' TO 'C:\Databases\dbname_data.mdf',MOVE 'dbname_log' TO 'C:\Databases\dbname_log.ldf' """

不幸的是,在 SQL Management Studio 中,代码运行后,我看到数据库仍处于“正在恢复...”状态。

如果我通过管理工作室恢复,它可以工作。如果我使用子进程调用“sqlcmd”,它可以工作。pymssql 在身份验证方面存在问题,甚至没有那么远。

可能出了什么问题?

0 投票
1 回答
1804 浏览

python - pyodbc 连接到 Linux 上的 Oracle 数据库

谁能给我指出一个“免费”资源,它允许通过 pyodbc 连接到 Oracle 数据库?我们有一个我们支持的多数据库环境。我有 DB2 和 MSSQL ODBC 驱动程序工作,但我似乎找不到任何有关通过 ODBC/pyodbc 连接到在 Linux 上运行的 Oracle 服务器的信息。

Linux: cat /etc/redhat-release CentOS release 5.5 (Final)

Python:python -V Python 2.4.3

我发现了一些链接到一些叫做 mxODBC 的东西,但它似乎是一个封闭的商业 ($$$) 解决方案。

0 投票
3 回答
4924 浏览

python - pyodbc.Error 'IM002' 连接到 DB2

我下载了 Python 2.7 ( python-2.7.1.amd64.msi ) 和 pyodbc,这是用于连接 DB2 数据库的 python 扩展模块 (即pyodbc-2.1.8.win-amd64-py2.7.exe )。

我编写了示例脚本,如下所示。

该脚本引发以下错误

由于我是 Python 的新手,我从错误中意识到我需要为 pyodbc 下载 IBM DB2 驱动程序,因此在 Google 上进行了广泛搜索,但找不到任何内容。

如果您能将我指向我可以下载驱动程序的站点,我将不胜感激,稍后再解释我如何配置/加载驱动程序。

如果是 Java

  • 驱动程序将以ojdbc.jar的形式提供,该文件将被复制到类路径上的lib目录中
  • 修改配置文件
  • 从 Java 类中引用 DataSource

我是 Python 的新手,所以如果您能通过 Python 中的示例告诉我相应的步骤,我将不胜感激。