每秒运行Python函数一分钟
我最近开始学习Python,我有一个应用程序,我想创建一个文本文件,每两秒钟记录一分钟的数据,然后从一个新文件开始。我把它写在打开的文件被格式化为SQL的地方,SQL插入查询被添加到其中 我遇到的麻烦是创建代码以实际正常工作。Python本身在向已打开的文件插入一行新的SQL时工作正常,但输出如下所示:每秒运行Python函数一分钟,python,mysql,function,loops,timer,Python,Mysql,Function,Loops,Timer,我最近开始学习Python,我有一个应用程序,我想创建一个文本文件,每两秒钟记录一分钟的数据,然后从一个新文件开始。我把它写在打开的文件被格式化为SQL的地方,SQL插入查询被添加到其中 我遇到的麻烦是创建代码以实际正常工作。Python本身在向已打开的文件插入一行新的SQL时工作正常,但输出如下所示: [blank line is here because of the \n] INSERT INTO table (column 1, column 2) VALUES ('7113', '13
[blank line is here because of the \n]
INSERT INTO table (column 1, column 2) VALUES ('7113', '1337');
INSERT INTO table (column 1, column 2) VALUES ('7113', '1337');
我的问题是,我需要获取数据,以便顶部没有新行,最后一行没有分号
这是我的来源:
from threading import Timer
import time
def start():
t = Timer(1.0,start)
foo = "7113"
bar = "1337"
date = time.strftime('%Y-%m-%d %H:%M:%S')
sql = "\nINSERT INTO table (column 1, column 2) VALUES ('%s', '%s');" % (foo, bar)
query = open(date + ".sql", "a")
query.write(sql)
query.close()
t.start()
start()
由于我不是语言方面的高手,我想做的一个更简单的版本是:
INSERT到表(第1列,第2列)中的值('7113','1337')
前面没有多余的一行,但带有分号\n
的行,在查询后添加分号李>
\n
,但不带分号2013-07-09 12-30-00.sql
,然后对2013-07-09 12-31-00.sql
重复该过程,依此类推另外,如果有任何人有任何学习Python的有用资源(我通过学习),我将非常感谢他们。这比学习C++更有趣。< /P> < P>我通过使用<代码>全局计数< /C>变量,并使用<代码>如果和
来自线程导入计时器
将xml.etree.ElementTree作为ET导入
导入URL库
导入时间
datetime=time.strftime(“%Y-%m-%d%H.%m”)
filename=datetime+“.sql”
url=“localhost/send.cgi”
间隔=0.5
表_name=“0001”
columns=“(时间、foo、bar)”
计数=0
def解析器():
t=计时器(间隔,解析器)
全局计数
全局文件名
查询=打开(文件名为“a”)
如果计数==0:
date=int(time.time()*1000)
web=urllib.urlopen(url)
tree=ET.parse(web)
root=tree.getroot()
foo=root[1]。text.replace(“,”)
bar=root[2]。text.replace(“,”)
sql=“插入到%s%s值('%s','%s','%s');”%(表名称,列,日期,foo,bar)
计数+=1
query.write(sql)
打印计数
t、 开始()
elif(计数>0)和(计数<59):
date=int(time.time()*1000)
web=urllib.urlopen(url)
tree=ET.parse(web)
root=tree.getroot()
foo=root[1]。text.replace(“,”)
bar=root[2]。text.replace(“,”)
sql=“\n插入%s%s值('%s','%s','%s');”%(表名称,列,日期,foo,bar)
计数+=1
query.write(sql)
打印计数
t、 开始()
elif计数==59:
date=int(time.time()*1000)
web=urllib.urlopen(url)
tree=ET.parse(web)
root=tree.getroot()
foo=root[1]。text.replace(“,”)
bar=root[2]。text.replace(“,”)
sql=“\n插入%s%s值('%s','%s','%s')”%)(表名称、列、日期、foo、bar)
计数+=1
query.write(sql)
打印计数
t、 开始()
elif计数==60:
query.close()
datetime=time.strftime(“%Y-%m-%d%H-%m”)
filename=datetime+“.sql”
计数=0
t、 开始()
解析器()
如果有任何改进,我很乐意看到!为什么第一行和最后一行需要不同的行为?为什么不用分号和换行符来结束每一行呢?我以为你不能在MySQL中这样做。
from threading import Timer
import xml.etree.ElementTree as ET
import urllib
import time
datetime = time.strftime('%Y-%m-%d %H.%M')
filename = datetime + ".sql"
url = "localhost/send.cgi"
interval = 0.5
table_name = "0001"
columns = "(time, foo, bar)"
counting = 0
def parser():
t = Timer(interval, parser)
global counting
global filename
query = open(filename, "a")
if counting == 0:
date = int(time.time()*1000)
web = urllib.urlopen(url)
tree = ET.parse(web)
root = tree.getroot()
foo = root[1].text.replace(" ", "")
bar = root[2].text.replace(" ", "")
sql = "INSERT INTO %s %s VALUES ('%s', '%s', '%s');" % (table_name, columns, date, foo, bar)
counting += 1
query.write(sql)
print counting
t.start()
elif (counting > 0) and (counting < 59):
date = int(time.time()*1000)
web = urllib.urlopen(url)
tree = ET.parse(web)
root = tree.getroot()
foo = root[1].text.replace(" ", "")
bar = root[2].text.replace(" ", "")
sql = "\nINSERT INTO %s %s VALUES ('%s', '%s', '%s');" % (table_name, columns, date, foo, bar)
counting += 1
query.write(sql)
print counting
t.start()
elif counting == 59:
date = int(time.time()*1000)
web = urllib.urlopen(url)
tree = ET.parse(web)
root = tree.getroot()
foo = root[1].text.replace(" ", "")
bar = root[2].text.replace(" ", "")
sql = "\nINSERT INTO %s %s VALUES ('%s', '%s', '%s')" % (table_name, columns, date, foo, bar)
counting += 1
query.write(sql)
print counting
t.start()
elif counting == 60:
query.close()
datetime = time.strftime('%Y-%m-%d %H-%M')
filename = datetime + ".sql"
counting = 0
t.start()
parser()