簡體   English   中英

根據python變量的值從表中檢索數據

[英]retrieving data from table based on a value from a python variable

我正在編寫一個函數,它將根據用戶提供的參數從sqlite表中檢索數據。 這是到目前為止的功能

def database_retrieve(db_file, id):
    try:
        conn = sqlite3.connect(db_file)

        with conn:
            sql_command = "SELECT * FROM my_table WHERE id = "+id

            cur = conn.cursor()
            cur.execute(sql_command)
            result = cur.fetchall()

            return result

    except Exception as e:
        print(e)

db_file = 'testdb.db'
print(database_retrieve(db_file, 'subject1'))

這給我以下錯誤

no such column: subject1
None

當我將subject1 (這是my_tableid列下的條目)直接添加到sql命令時,就像這樣

sql_command = "SELECT * FROM my_table WHERE id = 'subject1'"

它工作正常並打印所有數據。

我是sqlite3的新手。 請幫忙。 提前致謝

這些是我用來執行到目前為止的Python sqlite3字符串變量的鏈接

https://www.dummies.com/programming/databases/how-to-retrieve-data-from-specific-rows-in-mysql-databases/

當你這樣做

sql_command = "SELECT * FROM my_table WHERE id = "+id

sql_command的值為

"SELECT * FROM my_table WHERE id = subject1"

如您所見, subject1不在引號中。 sqlite認為這是一列,這就是為什么您看到該錯誤。

而是這樣做

sql_command = "SELECT * FROM my_table WHERE id = ?"
cur.execute(sql_command, [id])

? 充當變量id的占位符。

sqlite3官方文檔提到了其他一些方法https://docs.python.org/2/library/sqlite3.html

生成的sql_command字符串應類似於以下內容(格式化字符串):

sql_command = "SELECT * FROM my_table WHERE id = %s AND name = %s" % (212212, 'shashank')

暫無
暫無

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

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