Ниже приведен пример таблицы БД.
date id name
01.02.11 4 aaaa
21.05.19 5 aaaa
31.12.12 5 aaaa
01.05.15 6 aaaa
. Чтобы правильно запрашивать данные (избегая дубликатов), при запросе я должен установить «отчетную дату», которая является первым днем месяца. .
Приведенный ниже код дает мне запрошенные результаты, но только за один месяц.
sql = 'select * from db where date = '01.03.20''
def oracle(user, pwd, dsn, sql, columns):
# Connection to databases
con = cx_Oracle.connect(user=user, password=pwd, dsn=dsn, encoding="UTF-8")
con.outputtypehandler = OutputHandler
# Cursor allows Python code to execute PostgreSQL command in a database session
cur = con.cursor()
# Check Connection
print('Connected')
# Create DF
df = pd.DataFrame(cur.execute(sql).fetchall(), columns= columns, dtype='object')[:]
print('Shape:', df.shape)
return df
Вопрос: Как запросить данные с использованием CX_ Oracle с разными отчетную дату, не делая ее вручную?
Существует несколько способов решить эту проблему напрямую, используя SQL. Однако ожидаемое решение должно использовать «a для l oop».
Я думал об изменении отчетной даты на
for i in [str(i).zfill(2) for i in range(1,13)]:
for j in [str(j).zfill(2) for j in range(0,21)]
sql = f'select * from db where date = '01.{i}.{j}''
- Например: date = 01.01. 19
Идея состоит в том, чтобы запросить данные за эту дату -> сохранить их в DF
Go до следующего месяца 01.02.19 -> сохранить в DF
И так до тех пор, пока не достигнет диапазона 21 или не достигнет последнего текущего месяца (последняя дата)
Если у кого-то есть идея запросить данные, используя al oop с помощью cx_ Oracle и Pandas за другую дату спасибо за помощь!