недопустимый элемент массива с индексом 0: ожидается экземпляр datetime.date или datetime.datetime, получено значение int как asyncpg - PullRequest
0 голосов
/ 21 марта 2020

Я застрял с этим непросто интерпретировать ошибку с asyncpg. Ошибка говорит мне, что индекс 0 имеет неправильный тип, ожидая datetime при получении int:

asyncpg.exceptions.DataError: invalid input for query argument $1: [(None, 1000, 2001, datetime.datetime(2.... (invalid array element at index 0: expected a datetime.date or datetime.datetime instance, got 'int')

Это странно, потому что схема выглядит так:

id: bigint, 
eid: bigint, 
time: datetime, 
type: varchar(20)

Мои данные выглядят так:

data = [(None, 1000, 2001, datetime.datetime(2020, 3, 20, 23, 20, 35, 71), 'Testing1'),
        (None, 1001, 2002, datetime.datetime(2020, 3, 20, 23, 20, 35, 71), 'Testing2'),
        (None, 1002, 2003, datetime.datetime(2020, 3, 20, 23, 20, 35, 71), 'Testing3')]

Ничего не добавлено к первому элементу, потому что я видел, что в другом посте та же ошибка Без него.

И функция asyn c:

async def insert(data):
    conn = await asyncpg.connect(user='username', password='password',
                             database='database', host='127.0.0.1')
    res = await conn.fetch('''
    INSERT INTO tablename (id, eid, time, type)
    (SELECT
        e.id, e.eid, e.time, e.type
    FROM
        unnest($1::tablename[]) as e
    )
''', data)
    await conn.close()


loop = asyncio.get_event_loop()
loop.run_until_complete(insert(data))

Очень неясная ошибка, надеюсь, что любое может помочь решить эту проблему.

...