比较mysql和python中的2个数据字段

时间:2018-07-25 04:19:17

标签: python mysql python-3.x mysql-python

这是我的数据库

database

我想比较2个日期时间数据类型(datetime_comp和date_time) 比较简单。等等:date1> date 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()

结果是,比较代码只能与数据库中的最后一个数据一起使用,因为比较代码不能确定地循环(混乱)

但是如果在循环过程中将比较代码放到一个,

for date1 in row1:
    print(date1)

for date2 in row2:
    print(date2)

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

仅最后一个数据与所有数据进行比较

2 个答案:

答案 0 :(得分:2)

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

[104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100]

重复记录:

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

答案 1 :(得分:1)

首先将表格加载到数据框和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')

我希望它对您有用!