Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每秒运行Python函数一分钟_Python_Mysql_Function_Loops_Timer - Fatal编程技术网

每秒运行Python函数一分钟

每秒运行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

我最近开始学习Python,我有一个应用程序,我想创建一个文本文件,每两秒钟记录一分钟的数据,然后从一个新文件开始。我把它写在打开的文件被格式化为SQL的地方,SQL插入查询被添加到其中

我遇到的麻烦是创建代码以实际正常工作。Python本身在向已打开的文件插入一行新的SQL时工作正常,但输出如下所示:

[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')
    前面没有多余的一行,但带有分号
  • 让另一个函数运行58次,在SQL查询前添加带
    \n
    的行,在查询后添加分号
  • 让最后一个函数运行第60次,包括
    \n
    ,但不带分号
  • 关闭当前文件并生成一个带有该分钟时间戳的新文本文件,如
    2013-07-09 12-30-00.sql
    ,然后对
    2013-07-09 12-31-00.sql
    重复该过程,依此类推
  • 我想在那之后还有很多,比如让一个PHP或Python脚本读取日期并执行它,或者我可以让它们全部执行,然后按升序排列表。然而,这可以在以后解决和研究。我只是想让这个工作,因为我已经搜索了几个小时现在如何做,我找不到任何有用的东西。不过,我相信答案是显而易见的

    谢谢你们的阅读,希望你们能帮忙!我已经在这个网站上用了很多有用的花边新闻,它太棒了。不管是谁想出这个主意,都应该受到表扬


    另外,如果有任何人有任何学习Python的有用资源(我通过学习),我将非常感谢他们。这比学习C++更有趣。< /P> < P>我通过使用<代码>全局计数< /C>变量,并使用<代码>如果和ELIF < /C>语句,解决了这个问题。目前,脚本每500毫秒运行一次,没有问题。如果有人想查看我的代码,请访问:

    来自线程导入计时器
    将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()