Core Class & Function¶
-
class
dsdbmanager.dbobject.
DbMiddleware
(engine: sqlalchemy.engine.base.Engine, connect_only: bool, schema: str = None)¶ This is the main class that is wrapped around the sqlalchemy engines
Assume I have two tables, ‘table_1’ and ‘table 2’ in my default schema for an engine
>>> dbobject = DbMiddleware(engine, False, None) >>> dbobject.sqlalchemy_engine.table_names() ['table_1', 'table 2']
I can access the tables as they are properties or methods rather
>>> dbobject.table1 >>> dbobject['table 2'] # because it is not possible to use the . notation here
But these do not do anything, in fact they are all just functions that I can call
>>> dbobject.table1(rows=10) # to get the first 10 rows >>> dbobject['table 2'](rows=100, columns=('column', 'column with space')) # to only get the specified columns
I can also filter my data.
Say I want column_3 in table1 to be equal to ‘some_value’
>>> dbobject.table1(column_3='some_value')
If I want to get data only when column_3 is either ‘some_value’ or ‘other_value’
>>> dbobject.table1(column_3=('some_value', 'other_value')) # here I pass a tuple instead of a single value
tuples are used all around simply because we cache the result of these methods i.e. the dataframes
Say I had a column name that had spaces and I couldn’t just do what I did above, I could do this
>>> dbobject.table1(**{'column with space': 'some_value'}) # simply unpacking the dictionary at execution time
All those methods to pull data are table_middleware functions already evaluated at engine, table name and schema level.
Bonus
Get Metadata on your table
>>> dbobject._metadata.table1()
-
dsdbmanager.dbobject.
table_middleware
(engine: sqlalchemy.engine.base.Engine, table: str, schema: str = None)¶ This does not directly look for the tables; it simply gives a function that can be used to specify number of rows and columns etc. When this function is evaluated, it returns a function that holds the context. That function has the table name, the schema and engine. It then knows what to query once it is called.
Parameters: - engine – the sqlalchemy engine for the database
- table – a table name as in util_function
- schema – a schema of interest - None if default schema of database is ok
Returns: a function that when called, pulls data from the database table specified with ‘table’ arg