在python发行版中加载sqlite数据库

2024-09-30 22:23:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在设置.py我已将包的数据指定如下:

packages=['londontweetgrabber'],
package_dir={'londontweetgrabber': 'londontweetgrabber'},
package_data={'londontweetgrabber': ['data/data.db']},

我的目录层次结构大致如下:

^{pr2}$

我想做的是使用sqlite3加载文件数据数据库. 尝试这里找到的解决方案的变体(How do I use data in package_data from source code?),我可以验证数据是否正在加载,但是sqlite抱怨一个不存在的表,而我知道它确实存在。我想要这个数据数据库文件将与我正在编写的python包一起分发,因为我依赖它来完成我想做的事情。在

我现在有加载和未能加载sqlite的代码:

import sqlite3
import pkgutil


def get_conn():
    data = pkgutil.get_data('londontweetgrabber', 'data/data.db')
    print data

    return sqlite3.connect(data)

谢谢


Tags: 文件数据pyimport数据库packagedbsqlite
1条回答
网友
1楼 · 发布于 2024-09-30 22:23:45

实际上是将数据(内容data.db)传递给^{}。但是它需要一个指向您的数据库的路径,如/data/data.db。在

参见^{}

The function returns a binary string that is the contents of the specified resource.

您可以改为使用^{}来建立到data.db的正确文件系统路径:

import sqlite3
import pkg_resources

db_path = pkg_resouces.resource_filename('londontweetgrabber', 'data/data.db')
conn = sqlite3.connect(db_path)

相关问题 更多 >