sqlalchemy-jdbcapi 2.0.0.post2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. sqlalchemy_jdbcapi/__init__.py +128 -0
  2. sqlalchemy_jdbcapi/_version.py +34 -0
  3. sqlalchemy_jdbcapi/dialects/__init__.py +30 -0
  4. sqlalchemy_jdbcapi/dialects/base.py +879 -0
  5. sqlalchemy_jdbcapi/dialects/db2.py +134 -0
  6. sqlalchemy_jdbcapi/dialects/mssql.py +117 -0
  7. sqlalchemy_jdbcapi/dialects/mysql.py +152 -0
  8. sqlalchemy_jdbcapi/dialects/oceanbase.py +218 -0
  9. sqlalchemy_jdbcapi/dialects/odbc_base.py +389 -0
  10. sqlalchemy_jdbcapi/dialects/odbc_mssql.py +69 -0
  11. sqlalchemy_jdbcapi/dialects/odbc_mysql.py +101 -0
  12. sqlalchemy_jdbcapi/dialects/odbc_oracle.py +80 -0
  13. sqlalchemy_jdbcapi/dialects/odbc_postgresql.py +63 -0
  14. sqlalchemy_jdbcapi/dialects/oracle.py +180 -0
  15. sqlalchemy_jdbcapi/dialects/postgresql.py +110 -0
  16. sqlalchemy_jdbcapi/dialects/sqlite.py +141 -0
  17. sqlalchemy_jdbcapi/jdbc/__init__.py +98 -0
  18. sqlalchemy_jdbcapi/jdbc/connection.py +244 -0
  19. sqlalchemy_jdbcapi/jdbc/cursor.py +329 -0
  20. sqlalchemy_jdbcapi/jdbc/dataframe.py +198 -0
  21. sqlalchemy_jdbcapi/jdbc/driver_manager.py +353 -0
  22. sqlalchemy_jdbcapi/jdbc/exceptions.py +53 -0
  23. sqlalchemy_jdbcapi/jdbc/jvm.py +176 -0
  24. sqlalchemy_jdbcapi/jdbc/type_converter.py +292 -0
  25. sqlalchemy_jdbcapi/jdbc/types.py +72 -0
  26. sqlalchemy_jdbcapi/odbc/__init__.py +46 -0
  27. sqlalchemy_jdbcapi/odbc/connection.py +136 -0
  28. sqlalchemy_jdbcapi/odbc/exceptions.py +48 -0
  29. sqlalchemy_jdbcapi/py.typed +2 -0
  30. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/METADATA +825 -0
  31. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/RECORD +36 -0
  32. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/WHEEL +5 -0
  33. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/entry_points.txt +20 -0
  34. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/licenses/AUTHORS +7 -0
  35. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/licenses/LICENSE +13 -0
  36. sqlalchemy_jdbcapi-2.0.0.post2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,128 @@
1
+ """
2
+ SQLAlchemy JDBC API - Modern JDBC Dialect for SQLAlchemy.
3
+
4
+ This package provides a modern, type-safe SQLAlchemy dialect for JDBC connections,
5
+ supporting multiple databases through a native JPype-based implementation.
6
+
7
+ Supported Databases:
8
+ - PostgreSQL
9
+ - Oracle Database
10
+ - OceanBase (Oracle mode)
11
+ - MySQL
12
+ - MariaDB
13
+ - Microsoft SQL Server
14
+ - IBM DB2
15
+ - SQLite (via JDBC)
16
+
17
+ Features:
18
+ - Modern Python 3.10+ with full type hints
19
+ - Native JDBC implementation (no JayDeBeApi dependency)
20
+ - DataFrame integration (pandas, polars, pyarrow)
21
+ - SQLAlchemy 2.0+ compatible
22
+ - Comprehensive error handling and logging
23
+ - Connection pooling support
24
+
25
+ Example usage:
26
+ >>> from sqlalchemy import create_engine
27
+ >>> # PostgreSQL
28
+ >>> engine = create_engine('jdbcapi+postgresql://user:pass@localhost/db')
29
+ >>> # Oracle
30
+ >>> engine = create_engine('jdbcapi+oracle://user:pass@localhost:1521/ORCL')
31
+ >>> # MySQL
32
+ >>> engine = create_engine('jdbcapi+mysql://user:pass@localhost/db')
33
+ """
34
+
35
+ from __future__ import annotations
36
+
37
+ # Version management
38
+ try:
39
+ from ._version import version as __version__
40
+ except ImportError:
41
+ __version__ = "2.0.0.dev0"
42
+
43
+ # Public API
44
+ from . import jdbc
45
+ from .dialects import (
46
+ DB2Dialect,
47
+ MariaDBDialect,
48
+ MSSQLDialect,
49
+ MySQLDialect,
50
+ OceanBaseDialect,
51
+ OracleDialect,
52
+ PostgreSQLDialect,
53
+ SQLiteDialect,
54
+ )
55
+
56
+ __all__ = [
57
+ # Version
58
+ "__version__",
59
+ # JDBC Module
60
+ "jdbc",
61
+ # Dialects
62
+ "PostgreSQLDialect",
63
+ "OracleDialect",
64
+ "OceanBaseDialect",
65
+ "MySQLDialect",
66
+ "MariaDBDialect",
67
+ "MSSQLDialect",
68
+ "DB2Dialect",
69
+ "SQLiteDialect",
70
+ ]
71
+
72
+ # SQLAlchemy dialect registration
73
+ # This is automatically done via entry_points in pyproject.toml,
74
+ # but we can also register them here for programmatic access
75
+ try:
76
+ from sqlalchemy.dialects import registry
77
+
78
+ # Register all dialects
79
+ registry.register(
80
+ "jdbcapi.postgresql",
81
+ "sqlalchemy_jdbcapi.dialects.postgresql",
82
+ "PostgreSQLDialect",
83
+ )
84
+ registry.register(
85
+ "jdbcapi.pgjdbc", # Alias for backward compatibility
86
+ "sqlalchemy_jdbcapi.dialects.postgresql",
87
+ "PostgreSQLDialect",
88
+ )
89
+ registry.register(
90
+ "jdbcapi.oracle", "sqlalchemy_jdbcapi.dialects.oracle", "OracleDialect"
91
+ )
92
+ registry.register(
93
+ "jdbcapi.oraclejdbc", # Alias for backward compatibility
94
+ "sqlalchemy_jdbcapi.dialects.oracle",
95
+ "OracleDialect",
96
+ )
97
+ registry.register(
98
+ "jdbcapi.oceanbase",
99
+ "sqlalchemy_jdbcapi.dialects.oceanbase",
100
+ "OceanBaseDialect",
101
+ )
102
+ registry.register(
103
+ "jdbcapi.oceanbasejdbc", # Alias for backward compatibility
104
+ "sqlalchemy_jdbcapi.dialects.oceanbase",
105
+ "OceanBaseDialect",
106
+ )
107
+ registry.register(
108
+ "jdbcapi.mysql", "sqlalchemy_jdbcapi.dialects.mysql", "MySQLDialect"
109
+ )
110
+ registry.register(
111
+ "jdbcapi.mariadb", "sqlalchemy_jdbcapi.dialects.mysql", "MariaDBDialect"
112
+ )
113
+ registry.register(
114
+ "jdbcapi.mssql", "sqlalchemy_jdbcapi.dialects.mssql", "MSSQLDialect"
115
+ )
116
+ registry.register(
117
+ "jdbcapi.sqlserver", # Alias
118
+ "sqlalchemy_jdbcapi.dialects.mssql",
119
+ "MSSQLDialect",
120
+ )
121
+ registry.register("jdbcapi.db2", "sqlalchemy_jdbcapi.dialects.db2", "DB2Dialect")
122
+ registry.register(
123
+ "jdbcapi.sqlite", "sqlalchemy_jdbcapi.dialects.sqlite", "SQLiteDialect"
124
+ )
125
+
126
+ except ImportError:
127
+ # SQLAlchemy not installed yet (e.g., during installation)
128
+ pass
@@ -0,0 +1,34 @@
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
12
+
13
+ TYPE_CHECKING = False
14
+ if TYPE_CHECKING:
15
+ from typing import Tuple
16
+ from typing import Union
17
+
18
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
20
+ else:
21
+ VERSION_TUPLE = object
22
+ COMMIT_ID = object
23
+
24
+ version: str
25
+ __version__: str
26
+ __version_tuple__: VERSION_TUPLE
27
+ version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
30
+
31
+ __version__ = version = '2.0.0.post2'
32
+ __version_tuple__ = version_tuple = (2, 0, 0, 'post2')
33
+
34
+ __commit_id__ = commit_id = None
@@ -0,0 +1,30 @@
1
+ """
2
+ SQLAlchemy dialects for JDBC connections.
3
+
4
+ This package provides modern, type-safe dialects for various databases
5
+ using JDBC drivers through our native JPype-based implementation.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from .base import BaseJDBCDialect, JDBCDriverConfig
11
+ from .db2 import DB2Dialect
12
+ from .mssql import MSSQLDialect
13
+ from .mysql import MariaDBDialect, MySQLDialect
14
+ from .oceanbase import OceanBaseDialect
15
+ from .oracle import OracleDialect
16
+ from .postgresql import PostgreSQLDialect
17
+ from .sqlite import SQLiteDialect
18
+
19
+ __all__ = [
20
+ "BaseJDBCDialect",
21
+ "DB2Dialect",
22
+ "JDBCDriverConfig",
23
+ "MSSQLDialect",
24
+ "MariaDBDialect",
25
+ "MySQLDialect",
26
+ "OceanBaseDialect",
27
+ "OracleDialect",
28
+ "PostgreSQLDialect",
29
+ "SQLiteDialect",
30
+ ]