使用spatialite / python在不同驱动器上连接数据库

时间:2018-07-31 15:03:10

标签: python sql sqlite spatialite

我对GIS和python都是陌生的,因此感谢您的耐心配合。 我需要将数据从一个数据库复制到另一个数据库。这些表是相同的,我打算简单地清除目标表(DELETE FROM)并将其与源数据库中的数据一起加载(INSERT * INTO [destination] FROM [source];)我的挑战是源表和目标表都处于打开状态不同的驱动器。

我正在使用以下代码:

# Connect to the origin database.
ns_db_pnm = 'C:\\temp\\db_name.db'
conn = sqlite3.connect(ns_db_pnm)

# Load the SpatiaLite extension to SQLite.
conn.enable_load_extension(True)
conn.execute("select load_extension('mod_spatialite', 'sqlite3_modspatialite_init')")

cur = conn.cursor()
# Attach the destination database FROM A DIFFERENT DRIVE
d_db_pnm = 'D:\\db_path\\db_name.db'
cur.execute('ATTACH DATABASE ' + d_db_pnm + ' AS delivery;')

代码在执行时失败,并显示以下错误:

  

sqlite3.OperationalError:无法识别的令牌:“:”

似乎真的不喜欢我连接的数据库位于其他驱动器上的事实。

我看到的所有示例都使用到数据库的相对路径(无驱动器名称)。显然,我将需要更改工作目录或类似目录。请告知我该如何实现。我对广为人知的Google的呼吁并没有给出可行的答案。

0 个答案:

没有答案