pymysql一次性執行多條語句之坑

2021-10-23 18:52:53 字數 934 閱讀 4378

記錄一下今天使用pymysql遇到的乙個小小的問題,其實說是坑,不如說是自己平時沒有注意的乙個細節,寫下來,加深一下印象。

為了提高效率,使用executemany一次性執行多條sql語句,將所有的資料庫操作都封裝到了類中,以下只把問題中用到的**抽象如下:

def update(self, data_list):

"""將列表中的資料更新到資料庫中"""

sql_str = "update score_new set grade=%d"

try:

self.cur.executemany(sql_str, data_list)

self.conn.commit()

except exception as e:

traceback.print_exc(e)

finally:

self.close_connect()

例項化db物件後,呼叫以上函式對多行sql更新,示例如下:

if __name__ == '__main__':

db = db()

db.update([90, 78 , 89])

執行之後,結果如下:

提示資料型別不正確,需要乙個數字型別而不是字串型別,可是資料庫中要更新的字段型別明明是int型別,而且單條語句執行的時候是沒有問題。

使用executemany時,第1個引數中所有的變數統統用%s格式化即可,如下:

sql_str = "update score_new  set grade=%s"
再執行就成功了。具體的原因跟了一下原始碼也沒找到,姑且這麼記下來吧。

一次性執行多條SQL語句

本地 windows 192.168.55.133 遠端1 192.168.55.9 遠端2 192.168.55.10 利用phpmyadmin來賂遠端sql server匯入大量資料時,會很慢,基於卡死。因為,它是通過web方式來上傳的,匯入之前它會首先將要匯入的.sql檔案先上傳到伺服器然後再...

shell一次性執行多條命令

1.每個命令之間用 隔開說明 各命令的執行給果,不會影響其它命令的執行。換句話說,各個命令都會執行,但不保證每個命令都執行成功。2.每個命令之間用 隔開 說明 若前面的命令執行成功,才會去執行後面的命令。這樣可以保證所有的命令執行完畢後,執行過程都是成功的。3.每個命令之間用 隔開 說明 是或的意思...

SQL一次性插入多條資料

新增一條記錄 insert intotablename col1,col2,col3 values val1,val2,val3 新增多條記錄 insert intotablename col1,col2,col3 selectval1,val2,val3 union all selectval1,...