簡體   English   中英

如何在python中使用SQLAlchemy SQL-builder執行UPDATE查詢?

[英]How to execute UPDATE query with SQLAlchemy SQL-builder in python?

如果具有sqlalchemy數據庫,並且要運行更新查詢。 我以為我可以使用與SELECT命令相同的方法。

這是我的代碼:

disk_engine = create_engine('sqlite:///test.db')
chunksize = 20000
j = 0
index_start = 1

for df in pd.read_csv('test.csv', chunksize=chunksize, 
                         iterator=True, encoding='utf-8'):
    df.index += index_start
    j+=1
    df.to_sql('data', disk_engine, if_exists='append')
    index_start = df.index[-1] + 1

...

##NOW I WANT TO UPDATE A ROW
ts = pd.read_sql_query('UPDATE data SET score = ROUND(score,1)', disk_engine);

但這會引發錯誤:

_non_result中的result.pyc(默認值),如果self._metadata為None,則返回918:919 throw exc.ResourceClosedError(-> 920“此結果對象不返回行。” 921“它已自動關閉。”,922)

ResourceClosedError:此結果對象不返回行。 它已自動關閉。

如何正確更新數據庫?

如果確切的字符串UPDATE data SET score = ROUND(score,1)是您要執行的字符串,則應該能夠從到disk_engine的連接中執行該disk_engine 例如:

conn = disk_engine.connect()
result = conn.execute('UPDATE data SET score = ROUND(score,1)')

盡管我無法根據您的示例代碼確定更新語句是否/如何更改,所以這可能不是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM