python操作sqlite3出错

xghyxx 2013-03-22 12:45:41
全部代码如下:
#-*- coding: utf-8 -*-

import sqlite3

cx = sqlite3.connect("d:\\test.db")
cx.close()

出错的是cx = sqlite3.connect("d:\\test.db")
出错信息:AttributeError: 'module' object has no attribute 'connect'

请问这是怎么回事?
为这事我今天重装了python,可运行还是显示这个错误。在百度知道上有个网友说可能是文件名的问题,的确重装python之前我第一次测试的文件名是sqlite3.py,但是后来我把这个文件删除了,用了另外的文件名,乃至今天重装后也是用的另外的文件名运行的,可还是出现那个错误。

请各位python高手帮忙看看,到底是怎么回事?先谢谢了!!
...全文
967 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
JKhere 2013-04-02
  • 打赏
  • 举报
回复
我也出现了这个问题,受教了!
ImN1 2013-03-22
  • 打赏
  • 举报
回复
把 程序目录下的 __pycache__ 也删除 另外在双引号内\\可能还不够,不如直接用r'c:\test.db'
ImN1 2013-03-22
  • 打赏
  • 举报
回复
呃,跟我说的__pycache__是一个道理 py3是把生成的pyc文件都放在__pycache__里
xghyxx 2013-03-22
  • 打赏
  • 举报
回复
让你这一提醒,想起来原来确实那个目录里面有个sqlite3.pyc,刚才把删除的那个目录又恢复了,sqlite3.pyc从编辑器那里打开这个目录的话是看不到的,从资源管理器打开可以看到,把这个文件删除后就运行正常了。看来就是第一次测试的时候文件名是sqlite3.py惹的祸,后来虽然把sqlite3.py删除了,可是却留下了个sqlite3.pyc,所以才造成运行出错。 非常感谢angel_su的提醒!!
angel_su 2013-03-22
  • 打赏
  • 举报
回复
出错那个目录应该有个sqlite3.py还是sqlite3.pyc,看看是不是被隐藏了...
xghyxx 2013-03-22
  • 打赏
  • 举报
回复
现在又推翻前述的结论,又试了下后发现只要改变文件所在的目录就行,不管所在的目录名是不是有中文。
angel_su 2013-03-22
  • 打赏
  • 举报
回复
只是看看导入的sqlit3是从哪来的,是不是标准自带的那个。不过按你最后所述貌似没关系了...
xghyxx 2013-03-22
  • 打赏
  • 举报
回复
6楼的解释没看懂
xghyxx 2013-03-22
  • 打赏
  • 举报
回复
刚才又试了下,发现问题出在文件所在的目录名上,如果该文件所在的目录名是中文的,就会出现那个错误,如果不是中文的就运行成功,并且只要保证该文件所在的这个目录名不是中文就行,即使上面的目录有中文都不要紧。例如该文件是ll.py,它所在的路径如果是ll\lll\ll.py则没错,如果是 临时\lll\ll.py也没错,但如果是ll\临时\ll.py就出错,看来就是和编码有关。 不过现在是只知其然不知其所以然,如果能给彻底详细的解释下为什么会这样就好了。
angel_su 2013-03-22
  • 打赏
  • 举报
回复
下面把一个假的sqlite3摆到pythonpath取代原来标准模块, 查看sys.modules可以看出... Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> import sys, sqlite3 >>> sqlite3.connect("d:\\test.db") Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> sqlite3.connect("d:\\test.db") AttributeError: 'module' object has no attribute 'connect' >>> sys.modules['sqlite3'] <module 'sqlite3' from 'E:\pymodule\sqlite3.pyc'> >>>
ImN1 2013-03-22
  • 打赏
  • 举报
回复
引用 4 楼 xghyxx 的回复:
我自编的程序所在目录没有发现有__pycache__这个文件
好象是py3才有,没有也不奇怪
xghyxx 2013-03-22
  • 打赏
  • 举报
回复
我自编的程序所在目录没有发现有__pycache__这个文件
ImN1 2013-03-22
  • 打赏
  • 举报
回复
__pycache__就在你要运行的程序目录内,一般是多次运行时,py把程序编译了缓存作加速用 小心不要删错了模块里面的,我说的是你自编的程序所在目录 你的问题我也不解
xghyxx 2013-03-22
  • 打赏
  • 举报
回复
请问__pycache__是干什么用的,具体在哪个位置? 括号内我也换成r'c:\test.db'了,可是还是出这个错误。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧