【问题标题】:Don't want to create a new database if it doesn't already exists如果新数据库尚不存在,则不想创建新数据库
【发布时间】:2017-11-18 00:34:13
【问题描述】:

如果我有以下代码:

conn = sqlite3.connect('abc.db')

.. 如果数据库文件不存在,它将创建名为abc.db 的数据库文件。如果我不想创建新文件,只想在文件已存在的情况下连接成功,该怎么办?

【问题讨论】:

标签: python sqlite


【解决方案1】:

将 sqlite3_open_v2() 与 SQLITE_OPEN_READONLY 或 SQLITE_OPEN_READWRITE 一起使用。

如此处所述: http://www.sqlite.org/c3ref/open.html

【讨论】:

  • 你如何在 Python 中做到这一点?
  • 其实这个答案是在正确的轨道上。可以通过使用传递给 sqlite3.connect() 的 URI 样式数据库标识符从 Python 调用 sqlite_open_v2() API,尽管是间接调用。更多血腥细节见stackoverflow.com/a/47351716/4231304
【解决方案2】:

你可以检查文件是否已经存在:

import os
if not os.path.exists('abc.db'):
    conn = sqlite3.connect('abc.db')

【讨论】:

【解决方案3】:

你可以冷静一下,如果它已经存在并连接到预先存在的数据库,python 不会创建新数据库!

在 python 2.7 中工作!

试试这个:

import os
if not os.path.exists('path/to/database'):
    conn = sqlite3.connect('abc.db')
else:
    print "Error! db already exists!"

【讨论】:

  • 这不是问题。我不想连接到不存在的数据库,这会导致创建一个新的数据库,如果不存在的话。
猜你喜欢
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 2013-10-29
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多