>> |
No.42928
>>29820 О, этот тред как раз мне и нужен. Есть немного говнокода на питоне:
try:
cnxn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ='+dbPath)
cursor = cnxn.cursor()
try:
with open(csvPath) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
cursor.execute("INSERT INTO DatosTecnica (IdTecnica,Nombre,TipoMuestra,ConstituyenteAsociado,Unidades,\
RangoReferencia,FechaSesion,IdRegistroTecnica,ValorBlanco,FechaBlanco,NumCalibradores,ValorCalibrador,\
FechaCalibrador,FactorCalibracion,Exportada,TecCalculada,BorderLine) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
(row['IdTecnica'],row['Nombre'],int(row['TipoMuestra']),row['ConstituyenteAsociado'],row['Unidades'],
row['RangoReferencia'],'{ts\''+datetime.strptime(row['FechaSesion'],'%m/%d/%y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')+'\'}',
long(row['IdRegistroTecnica']),float(row['ValorBlanco']),'{ts\''+datetime.strptime(row['FechaBlanco'],'%m/%d/%y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')+'\'}',
long(row['NumCalibradores']),row['ValorCalibrador'],'{ts\''+datetime.strptime(row['FechaCalibrador'],'%m/%d/%y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')+'\'}',
row['FactorCalibracion'],int(row['Exportada']),int(row['TecCalculada']),row['BorderLine']))
except (pyodbc.DataError,pyodbc.ProgrammingError) as e:
print unicode(str(e.args[1]),encoding='cp1251');
except (pyodbc.Error) as e:
print unicode(str(e.args[1]),encoding='cp1251');
cursor.close()
cnxn.commit()
cnxn.close()
Суть в том, что при запуске это говно госэ (odbc) сообщает мне о какой-то нереализованной возможности. Но что это за возможность и кто её не реализовал оно сообщить не потрудилось.
[HYC00] [Microsoft][Драйвер ODBC Microsoft Access]Дополнительная возможность не реализована (106) (SQLBindParameter)
Как видно из кода он берёт из csv-шки строки и записывает их в бд Access (не спрашивайте зачем!). Хотя всё равно напишу - побилась БД с результатами за 4 года (было бы неприятно потерять), стандартными средствами от M$ не открывается и не восстанавливается, ошибка "Процесс остановлен ядром базы данных Jet т.к. другой пользователь пытается одновременно изменить те же данные", хотя другого пользователя в общем-то нет. В общем вытянул с этой поломанной БД данные с помощью mdb-dump из набора mdbtools, а он умеет только в csv. Теперь задача запихать две таблицы в чистую БД. Кроме odbc способов не знаю, питон потому что хочу. С датами по-разному пробовал, всё равно та же ошибка
|