44import logging
55import os
66import rlp
7- import sqlite3
7+ import psycopg2
88import subprocess
99from construct import Struct , Bytes , Int64ul
1010from eth_utils import big_endian_to_int
@@ -169,10 +169,22 @@ def get_account_list(client, storage_account):
169169 return None
170170
171171
172+
173+
172174class LogDB :
173- def __init__ (self , filename = "local.db" ):
174- self .conn = sqlite3 .connect (filename , check_same_thread = False ) # multithread mode
175- # self.conn.isolation_level = None # autocommit mode
175+ def __init__ (self ):
176+ POSTGRES_DB = os .environ .get ("POSTGRES_DB" , "neon-db" )
177+ POSTGRES_USER = os .environ .get ("POSTGRES_USER" , "neon-proxy" )
178+ POSTGRES_PASSWORD = os .environ .get ("POSTGRES_PASSWORD" , "neon-proxy" )
179+ POSTGRES_HOST = os .environ .get ("POSTGRES_HOST" , "localhost" )
180+
181+ self .conn = psycopg2 .connect (
182+ dbname = POSTGRES_DB ,
183+ user = POSTGRES_USER ,
184+ password = POSTGRES_PASSWORD ,
185+ host = POSTGRES_HOST
186+ )
187+
176188 cur = self .conn .cursor ()
177189 cur .execute ("""CREATE TABLE IF NOT EXISTS
178190 logs (
@@ -185,7 +197,7 @@ def __init__(self, filename="local.db"):
185197 transactionLogIndex INT,
186198
187199 json TEXT,
188- UNIQUE(transactionLogIndex, transactionHash, topic) ON CONFLICT IGNORE
200+ UNIQUE(transactionLogIndex, transactionHash, topic)
189201 );""" )
190202 self .conn .commit ()
191203
@@ -208,7 +220,7 @@ def push_logs(self, logs):
208220 if len (rows ):
209221 # logger.debug(rows)
210222 cur = self .conn .cursor ()
211- cur .executemany ('INSERT INTO logs VALUES (?, ?, ?, ? , ?, ? , ?) ' , rows )
223+ cur .executemany ('INSERT INTO logs VALUES (%s, %s, %s, %s , %s, %s , %s) ON CONFLICT DO NOTHING ' , rows )
212224 self .conn .commit ()
213225 else :
214226 logger .debug ("NO LOGS" )
@@ -219,21 +231,21 @@ def get_logs(self, fromBlock = None, toBlock = None, address = None, topics = No
219231 params = []
220232
221233 if fromBlock is not None :
222- queries .append ("blockNumber >= ? " )
234+ queries .append ("blockNumber >= %s " )
223235 params .append (fromBlock )
224236
225237 if toBlock is not None :
226- queries .append ("blockNumber <= ? " )
238+ queries .append ("blockNumber <= %s " )
227239 params .append (toBlock )
228240
229241 if blockHash is not None :
230242 blockHash = blockHash .lower ()
231- queries .append ("blockHash = ? " )
243+ queries .append ("blockHash = %s " )
232244 params .append (blockHash )
233245
234246 if topics is not None :
235247 topics = [item .lower () for item in topics ]
236- query_placeholder = ", " .join ("?" * len (topics ))
248+ query_placeholder = ", " .join ([ "%s" for _ in range ( len (topics ))] )
237249 topics_query = f"topic IN ({ query_placeholder } )"
238250
239251 queries .append (topics_query )
@@ -242,11 +254,11 @@ def get_logs(self, fromBlock = None, toBlock = None, address = None, topics = No
242254 if address is not None :
243255 if isinstance (address , str ):
244256 address = address .lower ()
245- queries .append ("address = ? " )
257+ queries .append ("address = %s " )
246258 params .append (address )
247259 elif isinstance (address , list ):
248260 address = [item .lower () for item in address ]
249- query_placeholder = ", " .join ("?" * len (address ))
261+ query_placeholder = ", " .join ([ "%s" for _ in range ( len (address ))] )
250262 address_query = f"address IN ({ query_placeholder } )"
251263
252264 queries .append (address_query )
0 commit comments