Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python AttributeError: 'module' object has no attribute 'connect'

I'm trying to create a program with sqlite3 database using Ubuntu (Xubuntu 14.04) and the pre-installed version of Python. I tried if the first lines are working but there is already an error. I installed "python-sqlite" and "sqlite3". Can anyone help?

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()

The output is:

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'

Thank's in advance!

like image 266
mschoenwaelder Avatar asked Sep 06 '14 23:09

mschoenwaelder


2 Answers

The error message shows you've named a file sqlite3.py:

/home/michael/ownCloud/sqlite3.py"

which masks the standard module of the same name. Your sqlite3.py does not define connect, hence the error. The solution is to rename your file to something else.

As Jim Raynor points out, importing sqlite3 will also create a .pyc file in /home/michael/ownCloud/ which would also have to be deleted before the sqlite3 module in the standard lib can be found.

like image 65
unutbu Avatar answered Sep 16 '22 16:09

unutbu


You need to change your script name. sqlite3 is the name of your script and of the package you want to import, so Python import your script instead of the package, hence the error.

like image 29
mingzhu li Avatar answered Sep 19 '22 16:09

mingzhu li