Форум сайта python.su
подскажите как получить значения типа datatime!
у меня есть файл, из которого данные импортируются в базу данных ()
вот текстовый файл:
00:00:25 309.0 1.5
00:00:55 209.0 2.7
00:01:25 115.0 3.5
00:01:55 39.0 1.2
00:02:25 56.0 3.5
00:02:55 108.0 1.9
00:03:25 270.0 4.5
year='2009'
month='01'
day='30'
name = 'C:/G%s/M%s/D%s/WIND1.dat'%(year, month, day)
fp = open (name)
fp.readline()
fname = str(fp)
print fname
t=fname.split('/')[1:-1]
#print t
tt=str(t)
g=tt[3:7]
m=tt[12:14]
d=tt[19:21]
day=g+'_'+m+'_'+d
print day
# -*- coding: UTF-8 -*- numpy as np, sys
import MySQLdb
import numpy as np
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import matplotlib.cm as cm
from numpy.random import random
from numpy import arange
c = MySQLdb.connect(host='localhost', user='root', passwd='12345', db='probnaya')
cu=c.cursor()
year='2009'
month='01'
day='30'
name = 'C:/G%s/M%s/D%s/WIND1.dat'%(year, month, day)
fp = open (name)
fp.readline()
fname = str(fp)
print fname
t=fname.split('/')[1:-1]
tt=str(t)
g=tt[3:7]
m=tt[12:14]
d=tt[19:21]
day=g+'_'+m+'_'+d
print day
def Create_table(cu):
try:
cu.execute("""
CREATE TABLE IF NOT EXISTS Wind(
date_time VARCHAR(25),
course DECIMAL(6,2),
speed DECIMAL(6,2),
max_speed DECIMAL(6,2)
);
""")
except :
print 'Error: '
def Insert_table(fp):
for stroka in fp:
try:
xx = stroka.split()
d_time=day + ' ' + xx[0]
course=float(xx[1])
speed=float(xx[2])
max_speed=float(xx[3])
sql = "INSERT INTO Wind (date_time, course, speed, max_speed) \
VALUES ('%s', '%s', '%s', '%s')"%(d_time, course, speed, max_speed)
# print sql
cu.execute(sql)
c.commit()
except:
print 'problem %s'%d_time
print sys.exc_info()
# else:
# print 'ok %s'%d_time
Create_table(cu)
Insert_table(fp)
cu.execute("""SELECT course, speed, max_speed FROM Wind;""")
data = cu.fetchall()
napr=np.array([float(napr_skor[0]) for napr_skor in data])
skor=np.array([float(napr_skor[1]) for napr_skor in data])
max_skor=np.array([float(napr_skor[2]) for napr_skor in data])
#print napr
#print skor
"роза ветров"
def new_axes():
fig = plt.figure(figsize=(6, 6), dpi=-55, facecolor='w', edgecolor='w')
rect = [0.35, 0.35, 0.6, 0.6]
ax = WindroseAxes(fig, rect, axisbg='w')
fig.add_axes(ax)
return ax
def set_legend(ax):
l = ax.legend(axespad=0.7)
plt.setp(l.get_texts(), fontsize=8)
ax = new_axes()
ax.contourf(napr, skor, bins=arange(0,8,1), normed=True)
set_legend(ax)
plt.savefig('nameBD.png', format='png')
fp.close()
c.close()
Офлайн
пробовали импортировать модули datetime или time и там посмотреть?
ну что-то типа
import datetime
f=datetime.datetime()#и передать то что вам нужно
Отредактировано (Май 13, 2010 17:02:11)
Офлайн
нет, так не получается, хотя я может не так делаю
d_time=datetime.datetime(day, xx[0])
Офлайн
skorpik
нет, так не получается, хотя я может не так делаюd_time=datetime.datetime(day, xx[0])
datetime можно передавать такие параметры:
datetime(year,month,day,hour,minute,second)
f=datetime.datetime(2010,10,1,12,23,34)
print(f)
то что получится:
2010-10-01 12:23:34
теперь думаю понятно!
Отредактировано (Май 13, 2010 19:27:37)
Офлайн
попробовал сделать так, теперь получается нужный формат, но в конце появляется ошибка:
exceptions.UnicodeEncodeError: ‘ascii’ codec can't encode character u'\u0440' in position 11: ordinal not in range(128)
что она значит?
Офлайн
Она значит что “ ‘ascii’ codec can't encode character u'\u0440' in position 11: ordinal not in range(128)”.
Проблема с кодировкой.
Офлайн
Зачем тип datetime? Формируй строкой и отправляй в базу - будет работать 100%
Офлайн