2015-10-06 6 views
0

Я запрашиваю SQL-сервер для получения значения DATETIME. Теперь я хочу вставить это значение в другую таблицу. Это мой сценарий:Python: преобразовать TupleRow в объект 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 в значение DATETIME SQL? В настоящее время я получаю эту ошибку из-за несовместимости типа:

TypeError: 'type' object is not subscriptable

ответ

0

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 
Смежные вопросы