Bonjour à tous,

Je suis nouveau sur ce forum, n'ai pas vraiment l'habitude de poster sauf quand, comme aujourd'hui, je n'ai trouvé nul part réponse à mes questions.
Je ne suis pas non plus un expert python et bricole mes scripts avec ce que je trouve ici et là !

Pour en venir au fait, j'ai un script, qui est une boucle infinie et qui tourne parfaitement en .py.
Le script tourne sur python 2.7.14 sous Windows, naturellement une fenetre cmd s'ouvre pendant l'exécution infinie de mon script.

Pour remédier à cela j'ai trouvé la solution de passer en .pyw. Alors certes aucune fenêtre ne s'ouvre mais le script ne s'exécute pas, ou se stop très rapidement. J'ai cette information car le but du script est d'écrire des données en base MSSQL. en .py j'ai de nouvelles données toutes les 10min, et pas en .pyw

Le script intègre les bibliothèques pyodbc, OpenOPC, time et datetime. Si cela peut aider.

Aussi je vous met le code en gardant en tête que celui fonctionne en .py, mais que peut-être des éléments font échouer le .pyw

Merci à vous par avance !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/python
 
import pyodbc 
import time
import OpenOPC
import datetime
 
 
 
#Connect to sql databse on this computer
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=MONSERV;DATABASE=MABASE;UID=MONUSER;PWD=MONPASS')
cursor = cnxn.cursor()
 
while True:
 
    #Launch stored procedure to get the information if we are in the concerned period for curtailment
    cursor.execute("EXEC MAPROCEDURE")
    rc = cursor.fetchval()
    #print rc
 
    #Current_date_time and format
    now = datetime.datetime.now()
    now_format = now.strftime("%Y-%m-%d %H:%M")
    now_format = str(now_format)
 
 
    #Get the current minute
    minute_maj = time.strftime("%M")
    if minute_maj[-1:] == '0' and minute[-1:] == '9':
        #Case of end of 10min point
        nv_10min = 1
        minute = minute_maj
 
        #Get 10min average on signal from DB
        cursor.execute("SELECT MONFIELD FROM MATABLE ")
        avg = cursor.fetchval()
        avg = ("%.2f" % avg)
        avg = str(avg)
        #Erase results in the realtime table
        cursor.execute("DELETE FROM MATABLE")
        cnxn.commit()
        #Insert into AVG table the result for the 10min point
        cursor.execute("INSERT INTO MATABLE VALUES('" + now_format + "','MAVALUE'," + avg + ")")
        cnxn.commit()
 
    else:
        #Case of pending 10min point
        nv_10min = 0
        minute = minute_maj
 
 
        #Connect to OPC server
        opc = OpenOPC.client()
        opc.connect('OPCSERVER')
        #Get value of current windspeed/round it/Send it to DB
        value = opc['SIGNAL']
        value = ("%.2f" % value)
        value = str(value)
 
 
        cursor.execute("INSERT INTO MATABLE VALUES('MAVALUE'," + value + ")")
        cnxn.commit()
        opc.close()