📝 Edit on GitHub
SQLAlchemy
Here we get row data and field names (on the .description
attribute) from a SQLite database, using the SQLAlchemy library.
Note use of with
block to automatically close the connection after the query is done, or even if it fails.
from sqlalchemy import create_engine
def get_connection():
"""
Create and return a connection to the configured SQLite database.`
"""
assert os.access(config.DB_PATH, os.R_OK), (
"Create the database or symlink then restart the application."
" Expected path: {}".format(config.DB_PATH)
)
sql_engine = create_engine("sqlite:///{}".format(config.DB_PATH))
return sql_engine.connect()
def fetch_data(query):
"""
Expect a SQL query, execute it and return rows and field names.
"""
with get_connection() as conn:
query = conn.execute(query)
rows = query.cursor.fetchall()
fields = [col[0] for col in query.cursor.description]
return rows, fields