sqlite3.connect()在python 3.3中不起作用
这可能很简单,但我不明白为什么我的脚本不能工作。我试图与sqlite3数据库建立连接,但eclipse返回错误:“未定义的变量来自导入:connect”。我正在linux上的virtualenv中运行python 3.3。谢谢你的帮助sqlite3.connect()在python 3.3中不起作用,python,sqlite,Python,Sqlite,这可能很简单,但我不明白为什么我的脚本不能工作。我试图与sqlite3数据库建立连接,但eclipse返回错误:“未定义的变量来自导入:connect”。我正在linux上的virtualenv中运行python 3.3。谢谢你的帮助 from urllib.request import urlopen import datetime import sqlite3 class Crawler(): def storeContent(self, html, url):
from urllib.request import urlopen
import datetime
import sqlite3
class Crawler():
def storeContent(self, html, url):
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute("INSERT .. ", [item, item])
c.commit()
c.close()
看起来亚历克斯·巴塞罗解决了这个问题 在Ubuntu上对我起作用的几乎是一样的*:
cd /usr/lib/python2.7/lib-dynload/
sudo ln -s _sqlite3.x86_64-linux-gnu.so _sqlite3.so
之后,我必须为我的PyDev项目重新配置Python解释器:
项目属性->PyDev解释器/语法->单击此处配置未列出的解释器,然后删除,为您正在使用的python环境运行自动配置,然后单击“应用”
*将“python2.7”替换为使用sqlite3的python版本,如果“\u sqlite3.x86\u 64-linux-gnu.so”不是linux系统的正确文件名,您通常可以使用“locate\u sqlite3”搜索该文件。Alex Barcelo似乎解决了这个问题 在Ubuntu上对我起作用的几乎是一样的*:
cd /usr/lib/python2.7/lib-dynload/
sudo ln -s _sqlite3.x86_64-linux-gnu.so _sqlite3.so
之后,我必须为我的PyDev项目重新配置Python解释器:
项目属性->PyDev解释器/语法->单击此处配置未列出的解释器,然后删除,为您正在使用的python环境运行自动配置,然后单击“应用”
*将“python2.7”替换为使用sqlite3的python版本,如果“\u sqlite3.x86\u 64-linux-gnu.so”不是linux系统的正确文件名,通常可以使用“locate\u sqlite3”搜索它,
connect
是从\u sqlite3
导入并从sqlite3
重新导出的函数之一。因此,我要尝试的第一件事是:import\u sqlite3
。如果可行,请调用help(\u sqlite3)
或dir(\u sqlite3)
查看它们是否正确。此外,尝试导入其他C实现的模块。您可能最终得到了一个32位Python但64位libs的venv,或者其他会破坏所有C模块的东西。我认为导入sqlite3是正确的,因为当我尝试打印(sqlite3.version\u info)时,它会正确返回版本。我还没有检查LIB。再看看我的评论<代码>\u sqlite3,带下划线,是一个C扩展模块sqlite3
,不带下划线,是一个包装扩展模块的纯Python模块。请尝试我建议的带有下划线的测试。对于其他C扩展模块的测试…在3.3中,大多数都以与sqlite3
相同的方式包装,但也有一些没有包装。我相信,importaudioop;打印audioop.\uuuuu文件\uuuuuuu
应该显示一个.so/.dll/.pyd文件,而不是.py文件。当我尝试执行:import sqlite3时,它会说是一个未解析的导入。这是否意味着图书馆是不正确的?audioop返回一个非.py文件,如您所说。很抱歉我不知道,我是一个初学者,通常,connect
是从\u sqlite3
导入并从sqlite3
重新导出的函数之一。因此,我要尝试的第一件事是:import\u sqlite3
。如果可行,请调用help(\u sqlite3)
或dir(\u sqlite3)
查看它们是否正确。此外,尝试导入其他C实现的模块。您可能最终得到了一个32位Python但64位libs的venv,或者其他会破坏所有C模块的东西。我认为导入sqlite3是正确的,因为当我尝试打印(sqlite3.version\u info)时,它会正确返回版本。我还没有检查LIB。再看看我的评论<代码>\u sqlite3,带下划线,是一个C扩展模块sqlite3
,不带下划线,是一个包装扩展模块的纯Python模块。请尝试我建议的带有下划线的测试。对于其他C扩展模块的测试…在3.3中,大多数都以与sqlite3
相同的方式包装,但也有一些没有包装。我相信,importaudioop;打印audioop.\uuuuu文件\uuuuuuu
应该显示一个.so/.dll/.pyd文件,而不是.py文件。当我尝试执行:import sqlite3时,它会说是一个未解析的导入。这是否意味着图书馆是不正确的?audioop返回一个非.py文件,如您所说。对不起我的无知,我是个初学者,以防你在场。我也有同样的问题,但在虚拟环境中。“我怎样才能解决这个问题?”维克多赫拉斯梅佩雷斯,对不起,真的不知道。我认为我的解决方案在假设您有根访问权限的情况下会起作用,但我想您可能尝试过这个方法,或者没有根访问权限。以防您在场。我也有同样的问题,但在虚拟环境中。“我怎样才能解决这个问题?”维克多赫拉斯梅佩雷斯,对不起,真的不知道。我认为我的解决方案在假设您有根访问权限的情况下会起作用,但我认为您尝试了这个方法或者没有根访问权限。