簡體   English   中英

使用Python子流程模塊創建SQLite數據庫時出錯

[英]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()

將第二個參數中的'放到sqliteargs列表的第三個元素)中。 subprocess模塊自行執行引用,並確保將參數作為一個字符串傳遞給可執行文件。 它可以在命令行上運行,因為在命令行中必須用'來告知外殼程序,它應將封閉的字符串視為單個實體。

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

應該管用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM