将 mysql 中的 2 个数据字段与 python 进行比较

comparing 2 data field in mysql with python

这是我的数据库

我想比较 2 个日期时间数据类型 (datetime_comp & date_time) 简单的比较。等:日期 1 > 日期 2 = "On_Time"

但我的问题是,我需要逐一比较数据(确定循环) 这是我的代码

from datetime import datetime
import pymysql
import time

#Declare Connection
conn = pymysql.connect(host='localhost', port='', user='root', passwd='', db='tes_coba', use_unicode=True, charset="utf8mb4")
cur = conn.cursor()

EW = "Tepat Waktu"
LW = "Tidak Tepat Waktu"

#get data from database
cur.execute("SELECT datetime_comp FROM `tweet2`")
row1 = cur.fetchall()
cur.execute("SELECT date_time FROM `tweet2`")
row2 = cur.fetchall()

n  = 1

for date1 in row1:
    print(date1)

for date2 in row2:
    print(date2)

if date1 > date2:
    Result=EW
elif date1 < date2:
    Result=LW

print(Result)
cur.execute("UPDATE tweet2 SET on_time=%s WHERE no=%s AND relevance='Relevan'",(str(Result), str(n)))
n = n + 1


conn.commit()
cur.close()
conn.close()

结果是,比较代码只适用于数据库中的最后一个数据,因为比较代码肯定不会循环(令人困惑)

但是如果我在循环过程中将比较代码设置为 1,

for date1 in row1:
    print(date1)

for date2 in row2:
    print(date2)

    if date1 > date2:
        Result=EW
    elif date1 < date2:
        Result=LW

只有最后一个数据与所有数据比较

首先将您的 table 加载到数据框中,然后 np.where 比较列以形成新列

import pymysql
import time
import numpy as np
import pandas as pd

#Declare Connection
conn = pymysql.connect(host='localhost', port='', user='root', passwd='', db='tes_coba', use_unicode=True, charset="utf8mb4")


query = "SELECT date_time,datetime_comp FROM tweet2"
df = pd.read_sql(query, conn)

df['result'] = np.where(df['datetime_comp']>df["date_time"], 'Tepat Waktu', 'Tidak Tepat Waktu')

希望对你有用!

首先,您不需要两个单独的查询来匹配相同 table 的两列。可以在同一个查询中完成。

cur.execute("SELECT * FROM `tweet2`")
records = cur.fetchall()

迭代记录:

for record in records:
    if record[2] < record[5]: # I'm assuming the column index 2 and 5 have the relevant table column values
        do something here
    else:
        do something else here