1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
"""Test QtSql."""
import sys
import pytest
from qtpy import PYSIDE2, PYSIDE_VERSION, QtSql
@pytest.fixture
def database_connection():
"""Create a database connection"""
connection = QtSql.QSqlDatabase.addDatabase("QSQLITE")
yield connection
connection.close()
def test_qtsql():
"""Test the qtpy.QtSql namespace"""
assert QtSql.QSqlDatabase is not None
assert QtSql.QSqlDriverCreatorBase is not None
assert QtSql.QSqlDriver is not None
assert QtSql.QSqlError is not None
assert QtSql.QSqlField is not None
assert QtSql.QSqlIndex is not None
assert QtSql.QSqlQuery is not None
assert QtSql.QSqlRecord is not None
assert QtSql.QSqlResult is not None
assert QtSql.QSqlQueryModel is not None
assert QtSql.QSqlRelationalDelegate is not None
assert QtSql.QSqlRelation is not None
assert QtSql.QSqlRelationalTableModel is not None
assert QtSql.QSqlTableModel is not None
# Following modules are not (yet) part of any wrapper:
# QSqlDriverCreator, QSqlDriverPlugin
@pytest.mark.skipif(
sys.platform == "win32" and PYSIDE2 and PYSIDE_VERSION.startswith("5.13"),
reason="SQLite driver unavailable on PySide 5.13.2 with Windows",
)
def test_qtsql_members_aliases(database_connection):
"""
Test aliased methods over qtpy.QtSql members including:
* qtpy.QtSql.QSqlDatabase.exec_
* qtpy.QtSql.QSqlQuery.exec_
* qtpy.QtSql.QSqlResult.exec_
"""
assert QtSql.QSqlDatabase.exec_ is not None
assert QtSql.QSqlQuery.exec_ is not None
assert QtSql.QSqlResult.exec_ is not None
assert database_connection.open()
database_connection.setDatabaseName("test.sqlite")
QtSql.QSqlDatabase.exec_(
database_connection,
"""
CREATE TABLE test (
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
name VARCHAR(40) NOT NULL
)
""",
)
# Created table 'test' and 'sqlite_sequence'
assert len(database_connection.tables()) == 2
insert_table_query = QtSql.QSqlQuery()
assert insert_table_query.exec_(
"""
INSERT INTO test (name) VALUES (
"TESTING"
)
""",
)
select_table_query = QtSql.QSqlQuery()
select_table_query.prepare(
"""
SELECT * FROM test
""",
)
select_table_query.exec_()
record = select_table_query.record()
assert not record.isEmpty()
|