我的a脚本处理SQLite3表中的条目并进行一系列更改。最后一步是写出一个表,总结磁盘上哪些文件夹将受到更改的影响(更改将独立地写回文件系统中的底层文件)。
dbcursor.execute('SELECT DISTINCT __dirpath FROM alib where sqlmodded > 0')
dirpaths = dbcursor.fetchall()
dirpaths.sort()
dbcursor.execute('create table IF NOT EXISTS dirs_to_process (__dirpath blob PRIMARY KEY);')
for dirpath in dirpaths:
dirpathstring = dirpath[0]
dbcursor.execute(f"REPLACE INTO dirs_to_process (__dirpath) VALUES {dirpathstring}")
字符串
最后一行代码抛出一个错误:
dbcursor.execute(f“REPLACE INTO dirs_to_process(__dirpath)VALUES {dirpathstring}”)
sqlite3.OperationalError:near“/":语法错误
我试过了
dbcursor.execute("REPLACE INTO dirs_to_process (__dirpath) VALUES (?)", (dirpathstring))
型
但我无法解决它。
2条答案
按热度按时间4ktjp1zp1#
我找到了一个解决办法:
字符串
ih99xse12#
你可以这样做:
字符串
注意
replace
命令是如何运行的。查询将是:型
我们将在查询后向execute命令提供一个
set
,如下所示:型
最后,我们将提交数据,以便将数据保存在DB中。
我在alib中插入了以下数据:
当我运行
python3 test.py
时,我将得到以下输出:python3 test.py('/dir1',)=> /dir1('/dir1/dir2',)=> /dir1/dir2('/dir1/dir3/',)=> /dir1/dir3/
当我使用
sqlite3 test.db
查询SQLite并运行:型
希望这对你有帮助。给予看
只要知道你甚至可以这样做:
型
并消除对
dirpathstring = dirpath[0]
的需要,除非您绝对需要这样做。