繁体   English   中英

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

[英]In python, when using sqlite3 where are databases stored physically?

对不起,基本问题。 我开始使用 Python。 我使用 Windows 10、Python 3.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 "$(FULL_CURRENT_PATH)" 看起来脚本运行正确,因为它第一次运行时什么都不做,但下次它说:

sqlite3.OperationalError: table example already exits

没关系,因为我想创建数据库和表。 问题是,这个sample.db存储在哪里? 我在 python 目录或我的项目目录中找不到它。 甚至不是通过在 Windows 中搜索。

如何删除整个数据库?

它将在当前的工作目录中。 你可以看到这是什么

import os
print(os.getcwd())

一旦知道了该目录,就可以找到并删除sample.db文件。

可能在notepadd ++使用的“当前目录”中。 尝试添加脚本:

import os
print(u"current directory: %s" % os.getcwdu())

也许你可以指定数据库的绝对路径来处理这种不确定性

如果您不需要数据库在文件系统上保留,可以使用special :memory: name将它们存储在内存中:

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 被保存在您定义 absolute_path 的任何地方

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM