Python: конвертировать TupleRow в объект Datetime

Я запрашиваю на сервере SQL для получения значения DATETIME. Теперь я хочу вставить это значение в другую таблицу. Это мой сценарий:

cursor2.execute(query1)
items = cursor2.fetchall()
for item in items:
    cursor1.execute(query2, [item[0]])
    c_date = cursor1.fetchone()
    print(type(c_date)) #here type is <class 'pypyodbc.TupleRow.<locals>.Row'>
    if c_date is not None:
        cursor2.execute(query3, [c_date, item[0]])

Как мне преобразовать этот TupleRow в значение SQL DATETIME? В настоящее время я получаю эту ошибку из-за несовместимости типов:

Ошибка типа: тип объекта не является подпиской

1 ответ

fetchone() Метод действительно возвращает строку. Вы можете извлечь отдельные столбцы из строки по их нумерованному индексу, как этот

import pypyodbc
connStr = (
    r"Driver={SQL Server Native Client 10.0};"
    r"Server=(local)\SQLEXPRESS;"
    r"Database=myDb;"
    r"Trusted_connection=yes;"
)
cnxn = pypyodbc.connect(connStr)
crsr = cnxn.cursor()
crsr.execute("SELECT LastName, FirstName, DOB FROM Clients WHERE ID=9")
row = crsr.fetchone()
print("row type:")
print(type(row))
print("row contents:")
print(row)
lastName = row[0]
firstName = row[1]
dob = row[2]
print("dob type:")
print(type(dob))
print("dob contents:")
print(dob)
crsr.close()
cnxn.close()

который производит следующий вывод

row type:
<class 'pypyodbc.Row'>
row contents:
(u'Dub\xe9', u'Homer', datetime.datetime(1954, 7, 21, 0, 0))
dob type:
<type 'datetime.datetime'>
dob contents:
1954-07-21 00:00:00
Другие вопросы по тегам