python - 請問個數據庫插入問題
問題描述
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)
這樣會報錯: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))
這樣就可以運行。
問題解答
回答1:cur.execute有兩個參數,一個是SQL,一個是給SQL的參數傳值,你第一句用雙引號括起來相當一個字符串,也就是一個參數,沒有傳入第二個參數
回答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 問題中的第一種方式無法自動解包回答4:
問題已找到,謝謝回答的朋友!
數據庫表插入新數據為動態時,更好的處理方式是先生成str,然后作為參數傳進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)
相關文章:
1. 網頁爬蟲 - Python 爬蟲中如何處理驗證碼?2. css3 - 微信前端頁面遇到的transition過渡動畫的bug3. javascript - 請教如何獲取百度貼吧新增的兩個加密參數4. Python如何播放還存在StringIO中的MP3?5. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?6. (python)關于如何做到按win+R再輸入文件文件名就可以運行?7. python - Win7調用flup報錯’module’ object has no attribute ’fromfd’8. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處9. mysql 一個sql 返回多個總數10. mysql - 如何減少使用或者不用LEFT JOIN查詢?
