[英]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.