1
+ import datetime
1
2
import json
2
3
import os
3
4
import sqlite3
4
- from datetime import datetime
5
5
6
6
7
7
# The database argument is "jobs" (in SqliteJobStorage), or a project (in SqliteSpiderQueue) from get_spider_queues(),
@@ -19,6 +19,19 @@ def initialize(cls, config, database, table):
19
19
return cls (connection_string , table )
20
20
21
21
22
+ # https://docs.python.org/3/library/sqlite3.html#sqlite3-adapter-converter-recipes
23
+ def adapt_datetime (val ):
24
+ return val .strftime ("%Y-%m-%d %H:%M:%S.%f" )
25
+
26
+
27
+ def convert_datetime (val ):
28
+ return datetime .datetime .strptime (val .decode (), "%Y-%m-%d %H:%M:%S.%f" )
29
+
30
+
31
+ sqlite3 .register_adapter (datetime .datetime , adapt_datetime )
32
+ sqlite3 .register_converter ("datetime" , convert_datetime )
33
+
34
+
22
35
class SqliteMixin :
23
36
def __init__ (self , database , table ):
24
37
self .database = database or ":memory:"
@@ -139,8 +152,8 @@ def __iter__(self):
139
152
project ,
140
153
spider ,
141
154
job ,
142
- datetime .strptime (start_time , "%Y-%m-%d %H:%M:%S.%f" ),
143
- datetime .strptime (end_time , "%Y-%m-%d %H:%M:%S.%f" ),
155
+ datetime .datetime . strptime (start_time , "%Y-%m-%d %H:%M:%S.%f" ),
156
+ datetime .datetime . strptime (end_time , "%Y-%m-%d %H:%M:%S.%f" ),
144
157
)
145
158
for project , spider , job , start_time , end_time in self .conn .execute (
146
159
f"SELECT project, spider, job, start_time, end_time FROM { self .table } ORDER BY end_time DESC"
0 commit comments