Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,当使用sqlite3时,数据库物理存储在哪里?_Python_Sqlite - Fatal编程技术网

在python中,当使用sqlite3时,数据库物理存储在哪里?

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

很抱歉问了一些基本的问题。我开始使用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()
当我在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(_文件__)好的,很高兴知道。我以后用这个,谢谢!