查看完整版本: python 練習問題(已解決)
頁: [1]

dinofree0618 發表於 2018-11-6 03:06 PM

python 練習問題(已解決)

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

上圖是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之間的空格所引起的但不知道要怎去修改它...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

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
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

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

謝謝指教 終於搞懂問題在哪了
非常感謝
頁: [1]