Kuxazululiwe: i-pandas Timedelta kuya kuma-postgres

Emhlabeni wokuhlaziya idatha, ukuphatha idatha yochungechunge lwesikhathi kuyisici esibalulekile. Enye yemitapo yolwazi esetshenziswa kakhulu kule njongo i-**pandas** ngolimi lohlelo lwePython. Umsebenzi ojwayelekile lapho usebenza nedatha yochungechunge lwesikhathi ukuguqula umehluko wesikhathi phakathi kwemicimbi ehlukene ube ifomethi evamile. Kulapho i-pandas Timedelta iza khona ilusizo. Kodwa-ke, lapho usebenza ngezinqolobane ezifana ne-PostgreSQL, ukugcina lawa ma-timedeltas kungaba yinto ekhohlisayo. Kulesi sihloko, sizoxoxa ngendlela yokuguqula i-pandas Timedelta ibe ifomethi engagcinwa ku-PostgreSQL, futhi siyithole ngenkathi igcina ukumelwa kwayo okulungile.

Isixazululo Senkinga

Isixazululo sale nkinga sibandakanya ukusebenzisa ama-pandas kanye nemitapo yolwazi ye-psycopg2, esetshenziswa kabanzi ekulawulweni kwedatha kanye nokuphathwa kwesizindalwazi se-PostgreSQL, ngokulandelana. Umtapo wezincwadi we-psycopg2 unosekelo lokuphatha i-timedeltas, kusetshenziswa uhlobo lwedatha `lwesikhawu` ku-PostgreSQL. Sizosebenzisa lesi sici ukuze sigcine i-pandas yethu i-Timedelta ku-PostgreSQL futhi siyibuyisele ngefomethi yayo efanele.

Okokuqala, ake singenise imitapo yolwazi edingekayo futhi sisungule uxhumano kusizindalwazi sethu se-PostgreSQL.

import pandas as pd
import psycopg2

conn = psycopg2.connect(database="your_database",
                        user="your_user",
                        password="your_password",
                        host="your_host",
                        port="your_port")

I-pandas Timedelta kanye ne-PostgreSQL Interval

I-pandas Timedelta iyithuluzi elinamandla lokuveza umehluko wesikhathi ngendlela engaguquki nefundekayo. Kulula ukudala nokukhohlisa izinto ze-timedelta kuma-panda, kodwa uma kuziwa ekuzigcineni kusizindalwazi se-PostgreSQL, sidinga ukuziguqulela kufomethi efanelekile.

I-PostgreSQL inikeza uhlobo lwedatha `lwesikhawu` ukugcina izikhawu zesikhathi. Lolu hlobo lwedatha lungamelela ubude besikhathi kuma-granularities ahlukahlukene, njengezinsuku, amahora, imizuzu, namasekhondi. Ukuze sigcine i-pandas Timedelta kusizindalwazi se-PostgreSQL, sidinga ukuyiguqulela ku-PostgreSQL isikhawu.

Masidale isampula ye-DataFrame ye-panda ngekholomu ye-Timedelta:

data = {'event_name': ['start', 'end'],
        'time': [pd.Timestamp('2021-01-01'), pd.Timestamp('2021-01-03')]}
df = pd.DataFrame(data)
df['difference'] = df['time'].diff()
print(df)

Manje ake sakhe umsebenzi wokufaka le datha kusizindalwazi sethu se-PostgreSQL futhi siguqule idatha ye-Timedelta ibe isikhawu esihambisana ne-PostgreSQL.

def insert_data(event_name, time, difference, conn):
    query = """
    INSERT INTO timedeltas (event_name, time, difference)
    VALUES (%s, %s, %s)
    """
    with conn.cursor() as cur:
        cur.execute(query, (event_name, time, difference))
    conn.commit()

Ngokusebenzisa lo msebenzi, singafaka idatha yethu ye-pandas DataFrame kusizindalwazi se-PostgreSQL:

for _, row in df.iterrows():
    event_name, time, difference = row['event_name'], row['time'], row['difference']
    insert_data(event_name, time, difference, conn)

Ibuyisa i-Timedeltas kusuka ku-PostgreSQL

Uma idatha ye-pandas ye-Timedelta igcinwe ku-PostgreSQL njengezikhawu, singayithola kalula futhi siyiguqule ibuyele kuma-pandas Timedeltas ngenkathi sifunda idatha.

Ake sakhe umsebenzi wokulanda idatha etafuleni lethu le-PostgreSQL:

def fetch_data(conn):
    query = "SELECT event_name, time, difference FROM timedeltas"
    data = pd.read_sql(query, conn)
    data['difference'] = pd.to_timedelta(data['difference'])
    return data

Ngalo msebenzi, singalanda futhi siphrinte idatha kusizindalwazi sethu se-PostgreSQL:

result = fetch_data(conn)
print(result)

Idatha elandwe ku-PostgreSQL manje ine-Timedeltas yayo emelwe kahle njenge-pandas Timedeltas.

Sengiphetha, ukuguqula i-pandas i-Timedelta ibe ifomethi efanelekile isitoreji se-PostgreSQL futhi ukuyibuyisela esimweni sayo sangempela kuyinqubo eqondile. Ngokusebenzisa ama-panda anamandla nemitapo yolwazi ye-psycopg2, singakwazi ukuphatha kalula idatha yochungechunge lwesikhathi futhi sigcine ukumelwa kwayo okufanele, kokubili ekuhlaziyeni kwethu idatha nasekugcinweni kwethu kolwazi.

Okuthunyelwe okuhlobene:

Shiya amazwana