python - 請(qǐng)問個(gè)數(shù)據(jù)庫(kù)插入問題
問題描述
Python3 or sqlite3info = '’INSERT INTO brush_card_record(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES(?,?,?,?)’,(’2017-05-28’,’12:23:32’, 123, 0)'
cur.execute(info)
這樣會(huì)報(bào)錯(cuò):sqlite3.OperationalError
cur.execute(’INSERT INTO brush_card_record(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES(?,?,?,?)’,(’2017-05-28’,’12:23:32’, 123, 0))
這樣就可以運(yùn)行。
問題解答
回答1:cur.execute有兩個(gè)參數(shù),一個(gè)是SQL,一個(gè)是給SQL的參數(shù)傳值,你第一句用雙引號(hào)括起來相當(dāng)一個(gè)字符串,也就是一個(gè)參數(shù),沒有傳入第二個(gè)參數(shù)
回答2:info = 'INSERT INTO brush_card_record(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES(%s,%s,%s,%s)'%(’2017-05-28’,’12:23:32’, 123, 0)
或者str.format
回答3:sqlite中是這么定義:class Connection(object): ''' SQLite database connection object. ''' def cursor(self, *args, **kwargs): # real signature unknown''' Return a cursor for the connection. '''passclass Cursor(object): ''' SQLite database cursor class. ''' def execute(self, *args, **kwargs): # real signature unknown''' Executes a SQL statement. '''pass 問題中的第一種方式無法自動(dòng)解包回答4:
問題已找到,謝謝回答的朋友!
數(shù)據(jù)庫(kù)表插入新數(shù)據(jù)為動(dòng)態(tài)時(shí),更好的處理方式是先生成str,然后作為參數(shù)傳進(jìn)cur.execute()中。
代碼示例:
insert_info = ’’’INSERT INTO %s(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES('%s', '%s', %s, %s)’’’ % (f_table_name, date, now_time, gold_6061, gold_6654)cur.execute(insert_info)
相關(guān)文章:
1. javascript - node.js promise沒用2. golang - 用IDE看docker源碼時(shí)的小問題3. c++ - 如何正確的使用QWebEngineView?4. yii2中restful配置好后在nginx下報(bào)404錯(cuò)誤5. javascript - js 寫一個(gè)正則 提取文本中的數(shù)據(jù)6. 算法 - python 給定一個(gè)正整數(shù)a和一個(gè)包含任意個(gè)正整數(shù)的 列表 b,求所有<=a 的加法組合7. android 如何實(shí)現(xiàn)如圖中的鍵盤上的公式及edittext的內(nèi)容展示呢8. java - 我在用Struts2上傳文件時(shí),報(bào)以下錯(cuò)誤怎么回事?9. 請(qǐng)問是對(duì)象還是數(shù)組10. thinkphp6使用驗(yàn)證器 信息如何輸出到前端頁(yè)面
