Условное заявление между сегодняшней датой и минус 3 месяцами в Python - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь вставить значения NULL в таблицу в зависимости от даты.Если дата находится между сегодняшней датой и 3 месяцами назад (это будет февраль).Затем я хочу обновить значения 'NULL' в каждом выбранном столбце.

Трассировка выглядит следующим образом:

Traceback (most recent call last):
  File "C:\projects\docs\script.py", line 41, in <module>
     if dt < date_sql < dr3:
TypeError: '<' not supported between instances of 'datetime.datetime' and 'pyodbc.Row'

Давно боролся, поэтому очень ценю ваше руководство, пока япопытался найти решение.

Код Python:

import pyodbc
from datetime import date, datetime
import dateutil.relativedelta

conn = pyodbc.connect(
r'DRIVER={SQL Server};'
r'SERVER=server;'
r'DATABASE=db;'
)

dt = datetime.today()
dr3 = dt - dateutil.relativedelta.relativedelta(months=3)
print(dr3)

cursor = conn.cursor()

sent_date = cursor.execute("""SELECT TOP 30 sent_date, id
              FROM Department.Customer""")


def fetch_date():
   for row in sent_date:
       r = row
       print(r)
   return r


date_sql = fetch_date()


if dt < date_sql < dr3:
   try:
       value = None
       cursor.execute("""UPDATE Department.Customer SET name=?, address=?, email=?, 
                      phone=?""", (value, value, value, value))

       cursor.commit()

   except pyodbc.Error as ex:
       print(str(ex))

       cursor.rollback()

cursor.close()

Вывод из print (dr3):

2018-02-28 17:19:50.452290

Вывод из print (r) вФункция fetch_date () имеет вид:

(datetime.datetime(2018, 5, 22, 10, 21, 36), 1)
(datetime.datetime(2018, 5, 22, 10, 21, 36), 2)
(datetime.datetime(2018, 5, 22, 10, 21, 36), 3)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...