我试图基于两列之一(即released_by和released_date)从访问数据库表中删除行。
Sudo code
WHERE released_by = '27' and released_date would change based on the day of the month.
如果day == 1,则为Released_Date,然后删除上个月的数据,否则删除当前的月份数据。
import pandas as pd
import numpy as np
import datetime
from datetime import date
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
import pyodbc
import calendar
import xlrd
import defusedxml
from defusedxml.common import EntitiesForbidden
from xlrd import open_workbook
defusedxml.defuse_stdlib()
# connecting to access database
conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Desktop\Insights.accdb;')
insights_dbcurs = conn.cursor()
select_auto_releases = "SELECT * FROM RELEASES WHERE RELEASED_BY = '27'"
autoreleases = insights_dbcurs.execute(select_auto_releases).fetchall()
#display(autoreleases)
for row in autoreleases:
previousmonth = datetime.now() - relativedelta(months=1)
previousmonth = previousmonth.strftime("%m - %Y")
currentmonth = datetime.now()
currentmonth = currentmonth.strftime("%m - %Y")
if ((row.autoreleases['RELEASED_DATE']).strftime) ==1:
try:
delete = 'DELETE * FROM RELEASES WHERE RELEASED_DATE = ? and RELEASED_BY = ?'
insights_dbcurs.execute(delete,{'RELEASED_DATE':currentmonth},{'RELEASED_BY':'27'})
except:
delete = 'DELETE * FROM RELEASES WHERE RELEASED_DATE = ? and RELEASED_BY = ?'
insights_dbcurs.execute(delete,{'RELEASED_DATE':previousmonth},{'RELEASED_BY':'27'})
insights_dbcurs.close()
conn.commit()
conn.close()
这是行不通的。 我得到:
AttributeError:'pyodbc.Row'对象没有属性'autoreleases'
如果我删除Row.autorelease ,我得到
sql具有0个属性,其中2个正在传递。
我如何避免这种情况。 任何建议都会很有帮助。