更新错误:mysql 8表、PyCharm(python 3.4)、pymysql conn

2024-10-01 11:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含800万行每月气象站数据的气候数据表。不幸的是,年/月列的格式实际上是“yyyy/mm”。代码的目的是从每行中提取日期,将其重新格式化为“yyyy-mm-dd”,然后将其放入新的日期列中。然后我可以做日期操作

因此,我想为fetchall()中的每一行将datyrmth列设置为变量new_date

结果甚至都没有错!我搞砸了什么

import pymysql
pymysql.install_as_MySQLdb()
import MySQLdb

my_db = MySQLdb.connect(
    host="localhost",
    user=" ",
    passwd=" ",
    database="gsom_data")

my_cursor = my_db.cursor()

my_cursor.execute("select * from gsom_data.ven_tbl_date")

for row in my_cursor.fetchall():
    id_row = str(row[0])
    prevdate = str(row[1])
    datYear = prevdate[:prevdate.index("/"):]
    datMonth = prevdate[prevdate.index("/") + 1:]
    new_date = datYear + "-" + datMonth + "-01"
    my_cursor.execute("Update ven_tbl_date set datyrmth={0} where id={1}".format(new_date, id_row))
    print(id_row + " " + prevdate + " " + datYear + " " + datMonth + " " + new_date)

my_db.commit()
my_db.close()

以下是前五行中的相关列:

id      prevdate datyrmth
7952901 1959/01  
7952902 1963/11  
7952903 1965/01  
7952904 1959/05  
7952905 1960/09  

以下是打印功能的输出:

id      prevdate datYear datMonth new_date
7952901 1959/01  1959    01       1959-01-01
7952902 1963/11  1963    11       1963-11-01
7952903 1965/01  1965    01       1965-01-01
7952904 1959/05  1959    05       1959-05-01
7952905 1960/09  1960    09       1960-09-01

以下是更新表的前五行:

id      prevdate datyrmth(i.e., new_date)
7952901 1959/01  1957
7952902 1963/11  1951
7952903 1965/01  1963
7952904 1959/05  1953
7952905 1960/09  1950

Tags: idnewdbdatemycursorrowmm