将 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
这是我的数据库
我想比较 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