首页 > 解决方案 > 使用 spatialite/python 在不同的驱动器上附加数据库

问题描述

我是 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:无法识别的令牌:“:”

它似乎真的不喜欢我附加的数据库在不同的驱动器上的事实。

我看到的所有示例都使用数据库的相对路径(无驱动器名称)。显然我需要更改工作目录或类似的东西。请告知我如何实现这一点。我对无所不知的谷歌的呼吁并没有产生一个可行的答案。

标签: pythonsqlsqlitespatialite

解决方案


推荐阅读