-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathInsertTools.py
141 lines (111 loc) · 5.7 KB
/
InsertTools.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""
@author: Quentin
"""
import mysql.connector
import os
import time
def FindID(name):
print(CountID(name))
return (name+"-"+str(CountID(name)))
def CountID(name):#retourne le premier indice libre d'un nom. i.e. si heron-1 et heron-2 sont déjà utilisé CountID("heron") retourne 3
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',
user='robot',password='HeronLeR0B0T')
sql_select_Query = "select * from AVAILABLE;"
cursor = connection.cursor()
cursor.execute(sql_select_Query)
records = cursor.fetchall()
#On recherche le premier index libre pour cet ID
Test=True
it=1 #Il est au minimum 1
while(Test):#Tant qu'il est nescessaire de continuer
Test=False #On suppose avoir trouvé le premier index libre
for elt in records:
if(elt[1]==name+"-"+str(it)): #Si l'index est utilisé
Test=True #Alors on doit parcourir une nouvelle fois la boucle
it+=1 #Et on incrémente donc l'indice
return(it)
def InsertID(askedname):#Utilise CountID pour trouver l'indice à utiliser. Insert dans AVAILABLE le nom demandé + indice et retourne nom+"-"+ID à utiliser
askedname=FindID(askedname)
try:
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',
user='robot',password='HeronLeR0B0T')
mySql_insert_query = """INSERT INTO AVAILABLE (Id, Status, ComAvailable)
VALUES
('"""+askedname+"""', 'available', 'LastTest') """
cursor = connection.cursor()
result = cursor.execute(mySql_insert_query)
connection.commit()
cursor.close()
except mysql.connector.Error as error:
print("Failed to insert record into AVAILABLE {}".format(error))
return askedname
def InsertCOMMANDS(ref,destination,function,source,com=None):#Insert dans COMMANDS (OrderID,Target,Function,Source,ComOrder). ComOrder est facultatif, la commands serat automatiquement en wainting
try:
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',
user='robot',password='HeronLeR0B0T')
if(com!=None):
mySql_insert_query = "INSERT INTO COMMANDS (OrderId, Function,Target,Status,Source,ComOrder) VALUES ('"+ref+"','"+function+"','"+destination+"','waiting','"+source+"','"+com+"');"
else:
mySql_insert_query = "INSERT INTO COMMANDS (OrderId, Function,Target,Status,Source) VALUES ('"+ref+"','"+function+"','"+destination+"','waiting','"+source+"');"
cursor = connection.cursor()
result = cursor.execute(mySql_insert_query)
connection.commit()
cursor.close()
except mysql.connector.Error as error:
print("Failed to insert record into AVAILABLE {}".format(error))
return True
def InsertDICTIONNARY(FunctionList,ID):#Liste de function [Function,ShortDesc,LongDesc]
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',
user='robot',password='HeronLeR0B0T')
mySql_insert_query = "DELETE FROM DICTIONNARY where ID='"+ID+"';"
cursor = connection.cursor()
result = cursor.execute(mySql_insert_query)
connection.commit()
cursor.close()
for elt in FunctionList:
function,shortDescription,longDescription=elt[0],elt[1],elt[2]
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',
user='robot',password='HeronLeR0B0T')
mySql_insert_query = "INSERT INTO DICTIONNARY (ID,Function, ShortDescription,LongDescription) VALUES ('"+ID+"','"+function+"','"+shortDescription+"','"+longDescription+"');"
cursor = connection.cursor()
result = cursor.execute(mySql_insert_query)
connection.commit()
cursor.close()
def ChangeCOMMANDS(status,line):#Change le status de la ligne de clé primaire line
#Pour des raisons encore obscures, si les INSERT fonctionnent, les UPDATE eux nescessitent de passer par la console
line=str(line)
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',user='robot',password='HeronLeR0B0T')
sql_select_Query = 'UPDATE heronDatabase.COMMANDS SET STATUS="'
sql_select_Query +=status
sql_select_Query += '" where LineOrder="'
sql_select_Query += line
sql_select_Query +='"'
cmd="""mysql -u 'robot' -h '192.168.0.105' --password='HeronLeR0B0T' -e '"""#Execute the UPDATE with a command line in a terminale
cmd+=sql_select_Query
cmd+="'"
os.system(cmd)#On execute la commande dans la console
cursor = connection.cursor()
cursor.execute(sql_select_Query)
if (connection.is_connected()):
connection.close()
cursor.close()
def UpdateCom(com,line):#Change le status de la ligne de clé primaire line
#Pour des raisons encore obscures, si les INSERT fonctionnent, les UPDATE eux nescessitent de passer par la console
line=str(line)
connection = mysql.connector.connect(host='192.168.0.105',database='heronDatabase',user='robot',password='HeronLeR0B0T')
sql_select_Query = 'UPDATE heronDatabase.COMMANDS SET ComOrder="'
sql_select_Query +=com
sql_select_Query += '" where LineOrder="'
sql_select_Query += line
sql_select_Query +='"'
cmd="""mysql -u 'robot' -h '192.168.0.105' --password='HeronLeR0B0T' -e '"""#Execute the UPDATE with a command line in a terminale
cmd+=sql_select_Query
cmd+="'"
os.system(cmd)#On execute la commande dans la console
cursor = connection.cursor()
cursor.execute(sql_select_Query)
if (connection.is_connected()):
connection.close()
cursor.close()