我正在尝试使用Ubuntu(Xubuntu 14.04)和预安装版本的Python创建一个带有sqlite3数据库的程序。我试过,如果第一行正在运行,但已经有错误。我安装了" python-sqlite"和" sqlite3"。有人可以帮忙吗?
import sqlite3
connection = sqlite3.connect('test.db')
cursor = connection.cursor()
cursor.execute('CREATE TABLE test ( id INTEGER, first INTEGER, second TEXT, third TEXT, other INTEGER)')
connection.commit()
输出结果为:
user@device:~/folder$ python sqlite3.py
Traceback (most recent call last):
File "sqlite3.py", line 1, in <module>
import sqlite3
File "/home/michael/ownCloud/sqlite3.py", line 3, in <module>
connection = sqlite3.connect('test.db')
AttributeError: 'module' object has no attribute 'connect'
提前感谢!
答案 0 :(得分:7)
错误消息显示您已将文件命名为sqlite3.py
:
/home/michael/ownCloud/sqlite3.py"
同名的masks the standard module。您的sqlite3.py
未定义connect
,因此错误。
解决方案是将您的文件重命名为其他内容。
正如Jim Raynor指出的那样,导入sqlite3
也会在.pyc
中创建一个/home/michael/ownCloud/
文件,该文件也必须在标准库中的sqlite3
模块之前删除可以找到。
答案 1 :(得分:0)
您需要更改脚本名称。 sqlite3
是脚本和要导入的包的名称,因此Python会导入脚本而不是包,因此会出现错误。
答案 2 :(得分:0)
将脚本从“ sqlite3.py”重命名为“ something else.py”。Python解释器很难区分脚本和内置模块sqlite3。 行'AttributeError:'module'对象没有属性'connect'告诉您,在运行脚本时,脚本会自行读取,并假定它是内置的sqlite3模块,显然其中不包含connect属性。
答案 3 :(得分:0)
我无法在这里回答您的输入,但是现在我已经对它进行了排序。
正如您所说,但是重命名原始文件是不够的。 您也必须删除* .pyc文件。我只改了名 文件名,由于它不起作用,我搜索了其他选项。
这很棘手,因为错误消息误导了人们。
无论如何。我现在已经解决了。 感谢您的输入。
就是这样,通常在您编码时经常键入文件名 您将要编写的代码,例如:Hello World。
因此文件名命名为helloworld.py
按照这种命名约定的精神,我将我的Pythonfile命名为
sqlite3.py
我不知道决定会给我带来如此多的悲伤 我编写了适当的代码,由于某种原因无法通过错误
未找到模块错误:sqlite3
这清楚地告诉我,由于某种原因,我没有该模块。 无论如何,使用pip命令冻结将解决此问题。
奇怪的是,sqlite3在列表中没有模块。那使我陷入了困境。 显然我很想念这个模块。
这很奇怪,因为我有Python版本。 3.8.2 并且配备了内置的sqlite3模块。
但是我无法验证。
我到处搜索,发现的所有建议都倾向于 我的Python安装中缺少某些内容。我会尽力的。无济于事。 然后经过2-3天的研究。我找到了这个线程。
它说Python无法区分模块名或文件名, 如果他们的名字完全相同。
按照此处的解决方案进行操作。如此简单。
将sqlite3.py文件另存为新文件名。 然后找到名为* .pyc的Python缓存文件,删除* .pyc文件。
现在一切正常。
因此,即使模块sqlite3没有通过pip Frozen命令列出,它 显然,整个时间都内置在另一个模块中。
请注意,我没有重新安装任何东西或添加其他模块来使其正常工作。 只是重命名了py-filename或以其他名称保存并 删除了* .pyc文件。没有其他变更。
答案 4 :(得分:0)
我遇到了同样的错误,但最终我得到了解决方案: “将您的程序复制并粘贴到另一个 .py 文件中,然后删除之前遇到错误的文件,保存并运行” 问题就解决了