Skip to content

Latest commit

 

History

History
165 lines (117 loc) · 2.86 KB

WARNING.md

File metadata and controls

165 lines (117 loc) · 2.86 KB

Sqllex v0.2.0.0

Changed returning data type

db.select(...) -> [(1, 'Data1'), (2, 'Data2')]

By now all select-like methods returns List[Tuple] instead of List[List]

# OLD
db.select(...) -> [[1, 'Data1'], [2, 'Data2']]

# NEW
db.select(...) -> [(1, 'Data1'), (2, 'Data2')]

Sqllex v0.1.10.0

SELECT structure changed !!!

Now you have to combine selecting columns into list or tuple:

RIGHT!

db.select('users', ['id', 'name'], ... ) 

WRONG!

db.select('users', 'id', 'name', ... ) 

Error:

Traceback (most recent call last):
  File "...\new_test_all.py", line 1, in select_test
    db.select('users', 'id', 'name', ... )
TypeError: select() got multiple values for argument 'WHERE'

WHY?

In update 0.1.10.0 expecting arguments for select method changed

Old structure:

def select(
        self,
        TABLE: Union[str, List[str]] = None,
        *args: Union[str, List[str]], # <----- this line!!!
        SELECT: Union[str, List[str]] = None,
        WHERE: WhereType = None,
        ...
        **kwargs,
) -> Union[SQLStatement, List[Any]]:

New structure:

As you see **args handling removed

def select(
        self,
        TABLE: Union[str, List[str], SQLite3xTable] = None,
        SELECT: Union[str, SQLite3xColumn, List[Union[str, SQLite3xColumn]]] = None,
        WHERE: WhereType = None,
        ...
        _method="SELECT",
        **kwargs,
) -> Union[SQLStatement, List[Any]]: ...

WHERE

Now you can set WHERE condition like this:

users = db['users']

users.select(
    SELECT=users['name'],
    WHERE=( users['id'] == 2 )
)

# OR (the same)

users.select(
    'name',
    users['id'] == 2
)

EXAMPLE

from sqllex import SQLite3x, INTEGER, TEXT, ALL

db = SQLite3x(path='test.db')

db.create_table(
    'users',
    {
        'id': INTEGER,
        'name': TEXT
    }
)

# Get table from database as object
users = db['users']

# Get column from table as object
urs_id = users['id']

# Get another column from table as object
usr_name = users['name']

print(users.columns_names)  # ['id', 'name']


# Inserting data
users.insert([1, 'Alex'])
users.insert([2, 'Blex'])


# SELECT * FROM users WHERE (users.id=2) OR (users.id=1)
users.select(ALL, (urs_id == 2) | (urs_id == 1))    # [[1, 'Alex'], [2, 'Blex']]


# Update name WHERE (id=1)
users.update(
    {'name': "XXXX"},
    WHERE=urs_id == 1
)


# SELECT * FROM users WHERE (users.id<>0) AND (users.id<>1)
users.select(
    [usr_name, urs_id],
    WHERE=(
        (urs_id != 0) & (urs_id != 1)
    )
)   # [['XXXX', 1], ['Blex', 2]]


# UPDATE id SET id = id + 2 WHERE (name = "XXXX")
users.update(
        {
            urs_id: urs_id + 2
        },
        WHERE=usr_name == 'XXXX'
)


users.select([usr_name, urs_id], WHERE=(urs_id == 3))   # [['XXXX', 3]]