以下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
但是,当我复制代码打印的命令时(恰好在错误消息上方),并将该命令粘贴到命令行上时,该命令创建了一个带有表的数据库。
代码有什么问题?
最佳答案
将第二个参数中的'
放到sqlite
(args
列表的第三个元素)中。 subprocess
模块自行执行引用,并确保将参数作为一个字符串传递给可执行文件。它在命令行上工作,因为在这里,'
是必需的,它可以告诉外壳将封闭的字符串视为单个实体。
args = ["sqlite3", "db.sqlite", "CREATE TABLE my_table(my_column TEXT)"]
应该管用。