updates
This commit is contained in:
39
research/ext_lib/db.py
Normal file
39
research/ext_lib/db.py
Normal file
@ -0,0 +1,39 @@
|
||||
"""Database-related stuff"""
|
||||
|
||||
import sqlalchemy
|
||||
from sqlalchemy import create_engine, text
|
||||
|
||||
DB_USER = "postgres"
|
||||
DB_PW = "KzsZ0wz5tp2wUIPM"
|
||||
DB_HOST = "db.stratlab.dev"
|
||||
DB_PORT = 30543
|
||||
DB_URL = f"postgresql://{DB_USER}:{DB_PW}@{DB_HOST}:{DB_PORT}"
|
||||
print(DB_URL)
|
||||
#DB_ARGS = {"sslmode": "verify-full", "sslrootcert": "system"}
|
||||
DB_ARGS = {}
|
||||
|
||||
def db_connect(db_name: str) -> sqlalchemy.engine.Engine:
|
||||
"""Connect to DB. Create it if it doesn't exist
|
||||
Args:
|
||||
db_name: name of the database to create
|
||||
"""
|
||||
try:
|
||||
engine = create_engine(f"{DB_URL}/{db_name}", connect_args=DB_ARGS)
|
||||
engine.connect()
|
||||
return engine
|
||||
except sqlalchemy.exc.OperationalError:
|
||||
# Database doesn't exist, create it
|
||||
conn = create_engine(f"{DB_URL}/postgres", isolation_level="AUTOCOMMIT", connect_args=DB_ARGS).connect()
|
||||
# TODO: figure out how to get rid of SQL injection. Standard parameterization adds quotes that breaks syntax
|
||||
conn.execute(text(f"CREATE DATABASE {db_name}"))
|
||||
|
||||
return create_engine(f"{DB_URL}/{db_name}", connect_args=DB_ARGS)
|
||||
|
||||
|
||||
# list exchanges
|
||||
# list symbols
|
||||
# first date
|
||||
# last date
|
||||
|
||||
# get data
|
||||
# save data
|
||||
Reference in New Issue
Block a user