[英]Error in creating an SQLite database using the Python subprocess module
以下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
但是,當我復制代碼打印的命令時(恰好在錯誤消息上方),並將該命令粘貼到命令行上,該命令創建了一個帶有表的數據庫。
代碼有什么問題?
除了@Dirk之前提到的額外報價外,您還可以創建數據庫而無需生成子進程:
import sqlite3
cnx = sqlite3.connect("e:/temp/db.sqlite")
cnx.execute("CREATE TABLE my_table(my_column TEXT)")
cnx.commit()
cnx.close()
將第二個參數中的'
放到sqlite
( args
列表的第三個元素)中。 subprocess
模塊自行執行引用,並確保將參數作為一個字符串傳遞給可執行文件。 它可以在命令行上運行,因為在命令行中必須用'
來告知外殼程序,它應將封閉的字符串視為單個實體。
args = ["sqlite3", "db.sqlite", "CREATE TABLE my_table(my_column TEXT)"]
應該管用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.