python - 从 Python 执行 sqlite3 "dot"命令或在命令行实用程序中注册排序规则

标签 python sqlite collation

我的 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/

相关文章:

c++ - SQLite 语法在 "S"附近不正确

mysql - 找不到合适的 MySQL 排序规则来区分 a 和 á

c# - Fluent Nhibernate,添加排序规则作为约定的一部分

python - 读取文件内容的类

python - 带有 Pandas 数据框的子图

python - 使用过多 RAM 在 python 中处理 XML 文件

r - 使 SQLite 的 generate_sequence 在 MS Windows 下的 R 的 sqldf 库中使用

python - django 不提供静态文件

c++ - 无法在 qSqlite ( QT 5.9) 中加载 Spatialite 扩展

windows - 是否可以为 Windows 7 和/或 8 创建不区分大小写的自定义区域设置?