以下Python代码尝试使用Linux中的命令行创建SQLite数据库和表:

#!/usr/bin/python2.6
import subprocess

args = ["sqlite3", "db.sqlite", "'CREATE TABLE my_table(my_column TEXT)'"]
print(" ".join(args))

subprocess.call(args)


当我运行代码时,它创建了一个零字节的数据库,输出如下:

sqlite3 db.sqlite 'CREATE TABLE my_table(my_column TEXT)'
Error: near "'CREATE TABLE my_table(my_column TEXT)'": syntax error


但是,当我复制代码打印的命令时(恰好在错误消息上方),并将该命令粘贴到命令行上时,该命令创建了一个带有表的数据库。

代码有什么问题?

最佳答案

将第二个参数中的'放到sqliteargs列表的第三个元素)中。 subprocess模块自行执行引用,并确保将参数作为一个字符串传递给可执行文件。它在命令行上工作,因为在这里,'是必需的,它可以告诉外壳将封闭的字符串视为单个实体。

args = ["sqlite3", "db.sqlite", "CREATE TABLE my_table(my_column TEXT)"]


应该管用。

07-24 09:49
查看更多