伊莉討論區

標題: python 練習問題(已解決) [打印本頁]

作者: dinofree0618    時間: 2018-11-6 03:06 PM     標題: python 練習問題(已解決)

本帖最後由 dinofree0618 於 2018-11-13 01:05 AM 編輯

[attach]125485915[/attach]上圖是sql
我想更改普通股股本某一欄的值
cursors.execute("UPDATE stocks set 流通股數=" + str(1) + " where (stock_id=" + '0015' +" and date=" + "2009-01-07 00:00:00")
為什麼一直跑出OperationalError: near "00": syntax error
雖然我大概知道是因為07和00之間的空格所引起的但不知道要怎去修改它
作者: kwj    時間: 2018-11-11 01:19 PM

本帖最後由 kwj 於 2018-11-11 01:23 PM 編輯

建議先把 SQL 語法印在 LOG 上,用眼睛看一下印出來的東西是不是跟預期的一樣
目前肉眼看起來,組出來的 SQL 應該會長這樣:
UPDATE stocks set 流通股數=XXX where (stock_id=0015 and date=2009-01-07 00:00:00)

推測錯誤點應該在於 data 的值需要用單引號框起來。
UPDATE stocks set 流通股數=XXX where (stock_id=0015 and date='2009-01-07 00:00:00')

否則 SQL 解析時會認為 WHERE 條件有三個:stock_id=0015、date=2009-01-07、和 00:00:00

作者: liame2020    時間: 2018-11-11 11:38 PM

試試這樣寫
cursors.execute("UPDATE stocks set 流通股數=" + str(1) + " where (stock_id=" + '0015' +" and date=" + "'2009-01-07 00:00:00'")
作者: dinofree0618    時間: 2018-11-13 01:05 AM

謝謝指教 終於搞懂問題在哪了
非常感謝




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!