簡體   English   中英

TypeError:無法將“列表”對象轉換為隱式SQLite3檢索數據

[英]TypeError: Can't convert 'list' object to str implicitly SQLite3 Retrieving Data

def course_id(enrolment_id):
    con = None

    try:
        con = lite.connect('C:/Users/Ethan/Desktop/SAT/SiemensAssessmentTool.db')
        with con:
            cur = con.cursor()

            cur.execute("SELECT course_id FROM Enrolment WHERE enrolment_id = '"+ enrolment_id+ "';")

            rows = cur.fetchall()
            courseids=[]
            for row in (rows):
                courseids = row
                return courseids

    finally:
        if con:
            con.close()

我要用此代碼執行的操作是檢索多個整數,因為我將其連接到另一個函數以從數據庫中查找其他數據。 我得到的錯誤是當我將其與其他功能連接時:

def course_name(course_id):
    con = None

    try:
        con = lite.connect('C:/Users/Ethan/Desktop/SAT/SiemensAssessmentTool.db')
        with con:
            cur = con.cursor()

            cur.execute("SELECT course_name FROM Course WHERE course_id = '"+ course_id+ "';")

            rows = cur.fetchall()

            return rows

    finally:
        if con:
            con.close()

我得到這個錯誤:

cur.execute("SELECT course_id FROM Enrolment WHERE enrolment_id = '"+ enrolment_id+ "';")
TypeError: Can't convert 'list' object to str implicitly

我猜想它與Course_id函數有關,但是我不確定。

TypeError:無法將“列表”對象隱式轉換為str

顯然,問題在於enrolment_id是一個list ,請檢查將什么作為參數傳遞給course_id()

附帶說明一下,您不應通過字符串串聯來構造查詢-這會導致類型轉換問題,並使您的代碼容易受到SQL注入的攻擊-而是對查詢進行參數化

cur.execute("SELECT course_id FROM Enrolment WHERE enrolment_id = ?", (enrolment_id, ))

如何獲取查詢結果也存在問題。 假設您需要數據庫中的單個課程ID,請使用fetchone()

courseid = cursor.fetchone()[0] 
return courseid

暫無
暫無

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

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