fix: db.py SQL (<>ALL, escape %% in LIKE) + incremental_sync tz-aware compare

This commit is contained in:
yeuimu
2026-07-23 08:43:27 +00:00
parent d48034f27a
commit 53ff943ac3
3 changed files with 6 additions and 2 deletions
+2
View File
@@ -37,6 +37,8 @@ def upsert_records(raw_orders: list) -> dict:
def riin_incremental_sync() -> dict: def riin_incremental_sync() -> dict:
db = SyncDB() db = SyncDB()
latest = db.get_latest_ordered_at("RIIN") latest = db.get_latest_ordered_at("RIIN")
if latest is not None and latest.tzinfo is not None:
latest = latest.replace(tzinfo=None)
now = datetime.now() now = datetime.now()
from_dt = floor_to_hour(latest) if latest else floor_to_hour(now) from_dt = floor_to_hour(latest) if latest else floor_to_hour(now)
to_dt = now to_dt = now
+2
View File
@@ -40,6 +40,8 @@ def upsert_records(raw_orders: list) -> dict:
def sds_incremental_sync() -> dict: def sds_incremental_sync() -> dict:
db = SyncDB() db = SyncDB()
latest = db.get_latest_ordered_at("SDS") latest = db.get_latest_ordered_at("SDS")
if latest is not None and latest.tzinfo is not None:
latest = latest.replace(tzinfo=None)
now = datetime.now() now = datetime.now()
from_dt = floor_to_hour(latest) if latest else floor_to_hour(now) from_dt = floor_to_hour(latest) if latest else floor_to_hour(now)
if from_dt >= now: if from_dt >= now:
+2 -2
View File
@@ -46,7 +46,7 @@ class SyncDB:
with conn.cursor() as cur: with conn.cursor() as cur:
cur.execute( cur.execute(
'SELECT DISTINCT "orderNo" FROM "Orders" WHERE "systemName"=%s ' 'SELECT DISTINCT "orderNo" FROM "Orders" WHERE "systemName"=%s '
'AND "systemStatus" IS DISTINCT FROM ALL %s', 'AND ("systemStatus" IS NULL OR "systemStatus" <> ALL %s)',
(system_name, exclude_statuses), (system_name, exclude_statuses),
) )
rows = cur.fetchall() rows = cur.fetchall()
@@ -92,7 +92,7 @@ class SyncDB:
cur.execute( cur.execute(
'SELECT DISTINCT o."orderNo", o."createdAt" FROM "Orders" o ' 'SELECT DISTINCT o."orderNo", o."createdAt" FROM "Orders" o '
'JOIN "Goods" g ON g."orderNo"=o."orderNo" AND g."createdAt"=o."createdAt" ' 'JOIN "Goods" g ON g."orderNo"=o."orderNo" AND g."createdAt"=o."createdAt" '
'WHERE o."systemName"=%s AND o."systemStatus"=ANY(%s) AND g."productionNo" LIKE \'100%\'', 'WHERE o."systemName"=%s AND o."systemStatus"=ANY(%s) AND g."productionNo" LIKE \'100%%\'',
(system_name, statuses), (system_name, statuses),
) )
rows = cur.fetchall() rows = cur.fetchall()