[英]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.