在python中,当使用sqlite3时,数据库物理存储在哪里?
很抱歉问了一些基本的问题。我开始使用Python。我使用windows10、python3.5、Notepad++作为编辑器。Python安装在在python中,当使用sqlite3时,数据库物理存储在哪里?,python,sqlite,Python,Sqlite,很抱歉问了一些基本的问题。我开始使用Python。我使用windows10、python3.5、Notepad++作为编辑器。Python安装在z:\python35中,脚本安装在z:\Python\sqlite中,那么我的脚本非常简单: import sqlite3 conn = sqlite3.connect('sample.db') c = conn.cursor() c.execute("CREATE TABLE example (name VARCHAR)") conn.close()
z:\python35
中,脚本安装在z:\Python\sqlite
中,那么我的脚本非常简单:
import sqlite3
conn = sqlite3.connect('sample.db')
c = conn.cursor()
c.execute("CREATE TABLE example (name VARCHAR)")
conn.close()
当我在Notepad++(以管理员身份运行)中运行脚本时,我执行z:\python35\python.exe-I“$(完整\u当前\u路径)
。看起来脚本运行正常,因为它在第一次运行时不执行任何操作,但在下一次运行时显示:
sqlite3.OperationalError:表示例已存在
这没关系,因为我想创建数据库和表。问题是,sample.db存储在哪里?我在python目录或我的项目目录中找不到它。即使在窗口中搜索也不行
如何删除整个数据库?它将位于当前工作目录中。你可以看看这是什么
import os
print(os.getcwd())
一旦知道了目录,就可以找到并删除sample.db
文件。可能在notepadd++使用的“当前目录”中。尝试在脚本顶部添加:
import os
print(u"current directory: %s" % os.getcwdu())
也许您可以为数据库指定一个绝对路径来处理这种不确定性如果您不需要数据库在文件系统上持久化,您可以使用特殊的
:memory:
名称将它们存储在内存中:
import sqlite3
conn = sqlite3.connect(':memory:')
一种解决方案是如下更改当前工作目录:
#import os module
import os, sqlite3
#change cwd to the given absolute path with a raw string.
absolute_path = r"z:\db\directory_for_db"
os.chdir(absolute_path)
# connect to database
conn = sqlite3.connect('sample.db')
c = conn.cursor()
c.execute("CREATE TABLE example (name VARCHAR)")
conn.close()
这将导致您的.db保存在您定义绝对路径的任何位置可能重复的Nop。。。我读了那本好书。它说它在记事本++目录中。从来没想过。我认为使用
$(FULL\u CURRENT\u PATH)
将使它成为我的工作目录,看起来它只告诉python脚本文件的全名。谢谢。现在我有一个不同的问题:-)您可以使用操作系统模块更改您的工作目录,这样您就可以将文件放在合理的位置。我将按照Stephan的建议执行:使用绝对路径,获取当前python文件的目录路径:os.path.dirname(_文件__)好的,很高兴知道。我以后用这个,谢谢!