pyodbc 连接到 sqlite 数据库

Posted

技术标签:

【中文标题】pyodbc 连接到 sqlite 数据库【英文标题】:pyodbc connection to sqlite database 【发布时间】:2017-08-29 08:19:46 【问题描述】:

我有一个非常简单的 python 脚本,我尝试使用 :

#!/usr/bin/env python

import sqlite3
import pyodbc

con_str = 'DRIVER=SQLITE3;DATABASE=%s' % ('/tmp/test.db')

db = pyodbc.connect(con_str)

当我执行这个脚本时,我收到错误:

Traceback (most recent call last):
  File "./test.py", line 8, in <module>
    db = pyodbc.connect(con_str)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib64/libsqlite3odbc.so' : file not found (0) (SQLDriverConnect)")

/usr/lib64/libsqlite3odbc.so是一个文件链接,存在:

$ ll /usr/lib64/libsqlite3odbc*
-rwxr-xr-x 1 root root 148232 Sep 29  2012 /usr/lib64/libsqlite3odbc-0.81.so
lrwxrwxrwx 1 root root     22 Aug 29 07:52 /usr/lib64/libsqlite3odbc.so -> libsqlite3odbc-0.81.so

这里有一些 odbc 文件:

$ cat /etc/odbc.ini
[SQLite3 Datasource]
Driver          = SQLITE3

$ cat /etc/odbcinst.ini
[SQLITE3]
Description             = SQLite ODBC 3.X
Driver          = /usr/lib64/libsqlite3odbc.so
Setup           = /usr/lib64/libsqlite3odbc.so
Threading               = 2
FileUsage               = 1
UsageCount              = 1

已安装版本 (rpm):pyodbc-3.0.7-1.x86_64sqliteodbc-0.81-1.2.x86_64

我应该怎么做才能消除这个错误?

【问题讨论】:

您是否有理由不使用本机 sqlite3 驱动程序?有了这个,你可以简单地import sqlite3 然后conn = sqlite3.connect('/path/to/db.sqlite3') ldd /usr/lib64/libsqlite3odbc.so 是否能够找到所有需要的依赖项? @FlipperPA 我们的应用程序在不同的服务器上使用不同的数据库(Oracle、Sybase、SQlite,...)。我们想使用相同的模块(pyodbc)创建连接。 【参考方案1】:

解决方案是安装 0.9995 版本的 SQLite ODBC 驱动程序。

【讨论】:

以上是关于pyodbc 连接到 sqlite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyodbc 连接到链接访问数据库

如何在 python 中使用 pyodbc 连接到本地优势数据库?

使用 sqlalchemy 和 pyodbc 连接到 SQL Server 2012

如何将 pyodbc 连接到 Access (.mdb) 数据库文件

尝试使用pyodbc将python连接到Access数据库时出错[重复]

使用 Pyodbc 连接到具有用户定义函数的 MS Access 文件