summaryrefslogtreecommitdiff
path: root/python/readmysql.py
blob: a3cd31f4ca296628349712b66d321acba4122d8f (plain)
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
## pip3 install mysql-connector-python
import mysql.connector as mysql

# enter your server IP address/domain name
HOST = "127.0.0.1" # or "domain.com"
# database name, if you want just to connect to MySQL server, leave it empty
DATABASE = "dev_pythia_db"
# this is the user you create
USER = "pythia_db_user_dev" ## "pythia_db_user_dev@cloudsqlproxy~35.203.252.44"
# user password
PASSWORD = "VnEP0eysjiXDHcfM"
# connect to MySQL server
_dbc = mysql.connect(host=HOST, database=DATABASE, user=USER, password=PASSWORD)
print("Connected to:", _dbc.get_server_info())
# enter your code here!


def get_data_from_db(cursor, sql):
    output = []
    cursor.execute(sql)
    row = cursor.fetchone()
    while row is not None:
        row_to_return = row.decode('utf-8') if isinstance(row, bytearray) else row
        output.append(row_to_return)
        row = cursor.fetchone()
    
    return output



cursor_ = _dbc.cursor()
#### cursor_.execute('''
####         SELECT count(dop.order_id) as FREQuency,
####             dop.product_id as product_id,
####             pb.brand_name,
####             pl.barcode, pl.skl_code, pl.eys_code,
####             IF( pd.description IS NOT NULL , pd.description , pl.product_description) AS product_description
####         FROM delivery_orders_products AS dop
####         LEFT JOIN delivery_orders AS do ON dop.order_id = do.id
####         LEFT JOIN product_list AS pl ON dop.product_id = pl.eys_code
####         LEFT JOIN product_list AS replacement ON dop.replacement_for = replacement.eys_code
####         LEFT JOIN product_details AS pd ON pl.eys_code = pd.eys_code
####         INNER JOIN product_brands pb ON pl.brand_id = pb.id
####         GROUP BY dop.product_id
####         ORDER BY FREQuency DESC
####     ''')
#### 
#### results = cursor_.fetchall()
#### 
#### for rec in results :
####     print(rec)


sqlq = '''
    SELECT count(dop.order_id) as FREQuency,
        dop.product_id as product_id,
        pb.brand_name,
        pl.barcode, pl.skl_code, pl.eys_code,
        IF( pd.description IS NOT NULL , pd.description , pl.product_description) AS product_description
    FROM delivery_orders_products AS dop
    LEFT JOIN delivery_orders AS do ON dop.order_id = do.id
    LEFT JOIN product_list AS pl ON dop.product_id = pl.eys_code
    LEFT JOIN product_list AS replacement ON dop.replacement_for = replacement.eys_code
    LEFT JOIN product_details AS pd ON pl.eys_code = pd.eys_code
    INNER JOIN product_brands pb ON pl.brand_id = pb.id
    GROUP BY dop.product_id
    ORDER BY FREQuency DESC
'''


results = get_data_from_db(cursor_, sqlq)

for r in results :
    if r[1] in [1176465, 1430400, 1220273] :
        print(r[1], r[6].split())














## prepare cloud-sql-proxy
## ---
## * install cloud-sql-proxy
##   : sudo wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O /usr/local/cloud_sql_proxy
##   : sudo chmod +x /usr/local/cloud_sql_proxy
##
## * prepare/export/publish/copy credentials ...
##   : sudo cp /some/path/to/cloudsqlproxy.json /usr/local
##
## * finaly run the database instance
##   : /usr/local/cloud_sql_proxy -instances=pythia-251711:europe-west4:pythia-db-eu=tcp:3306 -credential_file=cloudsqlproxy.json

## Queries
## ---
'''
-- ORDERS PER PRODUCT
SELECT count(dop.order_id) as FREQuency,
    dop.product_id as product_id,
    pb.brand_name,
    pl.barcode, pl.skl_code, pl.eys_code,
    IF( pd.description IS NOT NULL , pd.description , pl.product_description) AS product_description,
    pcs4.description AS productGroup
FROM delivery_orders_products AS dop
LEFT JOIN delivery_orders AS do ON dop.order_id = do.id
LEFT JOIN product_list AS pl ON dop.product_id = pl.eys_code
LEFT JOIN product_list AS replacement ON dop.replacement_for = replacement.eys_code
LEFT JOIN product_details AS pd ON pl.eys_code = pd.eys_code
LEFT JOIN product_categories_sap_4 pcs4 ON pcs4.id = pl.product_category_sap_4
INNER JOIN product_brands pb ON pl.brand_id = pb.id
GROUP BY dop.product_id
ORDER BY FREQuency DESC
'''