@@ -79,6 +79,7 @@ def set_up(self, engine=None, metadata=None, table_name="flask_usage",
7979 """
8080
8181 import sqlalchemy as sql
82+ from sqlalchemy .dialects import postgresql
8283 if db :
8384 self ._eng = db .engine
8485 self ._metadata = db .metadata
@@ -104,9 +105,10 @@ def set_up(self, engine=None, metadata=None, table_name="flask_usage",
104105 sql .Column ('view_args' , sql .String (64 )),
105106 sql .Column ('status' , sql .Integer ),
106107 sql .Column ('remote_addr' , sql .String (24 )),
108+ sql .Column ('country' , sql .String (64 )),
107109 sql .Column ('xforwardedfor' , sql .String (24 )),
108110 sql .Column ('authorization' , sql .Boolean ),
109- sql .Column ('ip_info' , sql . String ( 1024 ) ),
111+ sql .Column ('ip_info' , postgresql . JSONB ),
110112 sql .Column ('path' , sql .String (128 )),
111113 sql .Column ('speed' , sql .Float ),
112114 sql .Column ('datetime' , sql .DateTime ),
@@ -131,16 +133,7 @@ def store(self, data):
131133 """
132134 user_agent = data ["user_agent" ]
133135 utcdatetime = datetime .datetime .fromtimestamp (data ['date' ])
134- if data ["ip_info" ]:
135- t = {}
136- for key in data ["ip_info" ]:
137- t [key ] = data ["ip_info" ][key ]
138- if not len (json .dumps (t )) < 1024 :
139- del t [key ]
140- break
141- ip_info_str = json .dumps (t )
142- else :
143- ip_info_str = None
136+
144137 with self ._eng .begin () as con :
145138 stmt = self .track_table .insert ().values (
146139 url = data ['url' ],
@@ -156,7 +149,8 @@ def store(self, data):
156149 remote_addr = data ["remote_addr" ],
157150 xforwardedfor = data ["xforwardedfor" ],
158151 authorization = data ["authorization" ],
159- ip_info = ip_info_str ,
152+ country = data ["country" ],
153+ ip_info = data ["ip_info" ],
160154 path = data ["path" ],
161155 speed = data ["speed" ],
162156 datetime = utcdatetime ,
0 commit comments