An opinionated sqlite3 wrapper.
Project description
sqlite3i
An opinionated sqlite3 wrapper.
The main goal of this package is simply to have stmt.execute() return bool instead of a cursor object.
So that it can be useful to indicate True if the query succeeds, or False otherwise.
Empty results on INSERT, UPDATE, DELETE, and SELECT are considered as False.
It adopts the prepare - execute pattern merely for the user experience.
Synchronous usage
from sqlite3i import Database
db = Database('example.db')
def main():
try:
db.connect(timeout=30)
stmt = db.prepare(
'CREATE TABLE IF NOT EXISTS users ('
' id INTEGER PRIMARY KEY,'
' name TEXT NOT NULL,'
' age INTEGER NOT NULL'
');'
)
stmt.execute() # True
stmt = db.prepare('SELECT * FROM users')
stmt.execute() # False, no rows yet!
stmt = db.prepare('SELECT * FROM user')
stmt.execute() # False, no such table!
stmt = db.prepare(
'INSERT INTO users (name, age) VALUES (?, ?)'
)
stmt.execute(['Alice']) # False
stmt.execute(['Alice', 30]) # True
stmt = db.prepare('SELECT * FROM users LIMIT 10')
stmt.execute() # True
row = stmt.fetch()
while row:
print('*', row['name'], row['age'])
row = stmt.fetch()
finally:
db.close()
if __name__ == '__main__':
main()
Asynchronous usage
Asyncronous usage is powered by awaiter.
The following example uses an asynchronous context manager, although the try - finally approach as above can still be used.
import asyncio
from sqlite3i import AsyncDatabase
async def main():
async with AsyncDatabase('example.db') as db:
stmt = db.prepare(
'CREATE TABLE IF NOT EXISTS users ('
' id INTEGER PRIMARY KEY,'
' name TEXT NOT NULL,'
' age INTEGER NOT NULL'
');'
)
await stmt.execute(timeout=30)
stmt = db.prepare(
'INSERT INTO users (name, age) VALUES (?, ?)'
)
await stmt.execute(['Alice', 30])
stmt = db.prepare('SELECT * FROM users LIMIT 10')
await stmt.execute()
row = await stmt.fetch()
while row:
print('*', row['name'], row['age'])
row = await stmt.fetch()
if __name__ == '__main__':
asyncio.run(main())
Install
python3 -m pip install --upgrade sqlite3i
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sqlite3i-0.0.2.tar.gz.
File metadata
- Download URL: sqlite3i-0.0.2.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
953a59ca7d342455d98675833e5b3bce8381b84b855b24062ac1a9cd69aec033
|
|
| MD5 |
24eeb1f2bab1391bb6a4e0af865546e2
|
|
| BLAKE2b-256 |
9c44961d84020038cc9f1f9833e8ea9c48979f192dbc9fb3d6e66ef2419c2c4a
|
File details
Details for the file sqlite3i-0.0.2-py3-none-any.whl.
File metadata
- Download URL: sqlite3i-0.0.2-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83500e5ffb9de8e164c3da669bbdbfcec57b56a01957f93cbcb567f95db7fac5
|
|
| MD5 |
c8299739eb4c89e6a228d42d1ab1f61d
|
|
| BLAKE2b-256 |
95f28d38dda9312fb72f565082a99111400cb209ef42e2c3eae43b20159b9b9a
|