我的 sqlite3 数据库包含一个“整理”列约束。我已将它放在表的架构中,以防止意外忽略使用必要的排序规则。然而,这意味着当从命令行而不是从我的 Python 代码运行 sqlite3
时,架构中引用的排序规则不存在,并且我无法使用点命令。
sqlite> .import data.txt table_name
Error: no such collation sequence: my_collation
此外,从 Python 创建连接并添加所需的排序规则会遇到此问题:
connWithCollation.execute(".import data.txt table_name")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
sqlite3.OperationalError: near ".": syntax error
它会出现的 execute
函数不想通过 sqlite3 dot 命令。
如果没有必要的排序功能,我如何执行 sqlite3 dot 命令?或者,如何从 Python 执行 sqlite3 dot 命令?
最佳答案
您可以使用 subprocess 模块从 Python 调用点命令,该模块基本上调用一个 shell。如果您需要使用多个点命令,可以将它们作为单独的 shell 参数传递 - 使用分号分隔它们是行不通的。
import subprocess
subprocess.call(["sqlite3", "xxx.db",
".mode tabs",
".import file.tsv table_name"])
关于python - 从 Python 执行 sqlite3 "dot"命令或在命令行实用程序中注册排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346074/