Column

Sub-class of AbstractTable, itself it's one abstract column inside abstract table. Primary have the same methods but without table name argument.

class AbstractColumn:
    """
    Sub-class of AbstractTable, itself it's one abstract column inside of abstract table
    Primary have the same methods but without table name argument

    This class existing for generating SearchConditions
    in constructions like this:
        db['table_name']['column_name'] = x
        db['table_name']['column_name'] > x
        db['table_name']['column_name'] >= x
        db['table_name']['column_name'] != x
        ...
        db['table_name']['column_name'] / x

        AND SPECIAL: column-like-reg_ex
        db['table_name']['column_name'] |LIKE| '%find_me%'
    """

    def __init__(self, table: str, name: AnyStr, placeholder='?'):
        """
        Attributes
        ----------
        table : AbstractTable
            Parent table object
        name : str
            Name of column
        placeholder : str
            Symbol used in scripts as placeholder

        """

Examples

import sqllex as sx
from sqllex.classes import 

db = sx.SQLite3x(path='db-1.db')
# db = sx.PostgreSQL(...)

db.create_table(
    'users',
    {
        'id': [sx.INTEGER, sx.PRIMARY_KEY, sx.UNIQUE],
        'name': [sx.TEXT, sx.NOT_NULL, sx.DEFAULT, 'Unknown']
    }
)

id_col: AbstractColumn = db['users']['id']  # AbstractColumn
name_col: AbstractColumn = db['users']['name']  # AbstractColumn

db.update(
    TABLE='users',  # table name
    SET=['username', 'Updated_name_0'],  # set username 'Updated_name_0'
    WHERE=(
            id_col == 1  # where id == 1
    )
)

db.update(
    'users',  # table name
    ['username', 'Updated_name_1'],  # set username 'Updated_name_1'
    id_col > 1  # where id > 1
)

db.update(
    'users',
    SET={
        'name': 'Updated_name_1'
    },
    WHERE=(
            id_col == 1
    )
)

db.update(
    'users',
    SET={
        name_col: name_col + '__UPDATED'  # SET id column name value == old value + '__UPDATED'
    },
    WHERE=(
            id_col == 1
    )
)

Back to home