2016-07-21 17 views
0
import sqlite3 
db=sqlite3.connect('new.db') 
cursor=db.cursor() 
cursor.execute('''CREATE TABLE hello(id INTEGER PRIMARY KEY, 
Message_type, time_sent, time_received, response)''') 

上述计划,但当我从一个.py文件运行相同的程序时,它不会创建任何表或数据库的Python Sqlite3- Python的外壳可以创建和编辑数据库,但为什么不能在一个.py文件创建或从Python shell中执行将执行,并通过上述名称创建一个数据库时,访问任何数据库

+0

你怎么知道它没有创建表?它是否产生错误信息? –

+0

因为我通过数据库浏览器手动检查它。-dbbrowser for sqlite – lotrgandalf

+0

如果在脚本中添加db.commit()和db.close(),会发生什么情况? – Kyle

回答

0
import sqlite3 
from os.path import expanduser 
db_dir = expanduser("~") 
db=sqlite3.connect(db_dir+'/new.db') 
cursor=db.cursor() 
cursor.execute('''CREATE TABLE hello(id INTEGER PRIMARY KEY, 
Message_type, time_sent, time_received, response)''') 

现在看看你的主目录为new.db

+0

它的工作。谢谢。 – lotrgandalf

+0

您提供给我的代码创建了数据库,但它只读,我无法对其进行任何更改。有没有办法让任何用户读取/写入? – lotrgandalf

+0

这可能是因为它在你的$ HOME目录下。使'db_dir'等于其他人可以访问的地方。 '/ home/public'什么的。 –

0

我想,.py文件确实创建了数据库文件,但是您并未查找数据库文件正确的位置。将其添加到程序的末尾:

print(os.path.join(os.getcwd(), 'new.db')) 

无论它打印什么,都可以在那里查找您的数据库文件。

+0

也会得到相同的结果python shell和.py文件是否将.db文件保存在不同的目录中? – lotrgandalf

+0

这取决于它们是如何被调用的。既然你没有指定你如何调用,这似乎是一种可能性。 –

+0

我试过了你的建议。但是,数据库不在os.path命令返回的位置。 – lotrgandalf

相关问题