You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**UNIQUE / CHECK enforcement**| ❌ (accepted for compatibility; compile-time warnings are emitted for CREATE TABLE and ALTER TABLE ADD COLUMN) |
47
+
|**UNIQUE / CHECK / FOREIGN KEY enforcement**| ❌ (accepted for compatibility; compile-time warnings are emitted for CREATE TABLE and ALTER TABLE ADD COLUMN) |
48
48
|**Concurrent writes**| ❌ |
49
49
|**Session.rollback()**| Partial (openpyxl with autocommit=False; graph: no-op) |
Boolean values accept `true/false`, `1/0`, and `yes/no` (case-insensitive).
60
+
31
61
**Important**: Absolute paths require **four slashes** total (`excel:////absolute/path.xlsx`).
32
62
33
63
> **Source checkout note**: In development/source mode (without an installed entry point), import `sqlalchemy_excel` before `create_engine(...)` so SQLAlchemy registers `excel://` and `excel+graph://` dialects.
@@ -358,7 +388,7 @@ sqlalchemy-excel has some limitations due to the nature of Excel as a database:
358
388
-**ORM relationship limits**: Lazy one-to-many relationship loading can return empty collections; use eager loading (`joinedload`) for reliable one-to-many reads.
359
389
-**Many-to-many loading is unsupported**: Association table persistence works, but relationship loader SQL for many-to-many is not fully supported.
360
390
-**No foreign keys or indexes**: Excel has no concept of these.
361
-
-**UNIQUE/CHECK are not enforced**: They are accepted for SQLAlchemy compatibility, ignored by the backend, and compile-time warnings are emitted for `CREATE TABLE` and `ALTER TABLE ... ADD COLUMN`.
391
+
-**UNIQUE/CHECK/FOREIGN KEY are not enforced**: They are accepted for SQLAlchemy compatibility, ignored by the backend, and compile-time warnings are emitted for `CREATE TABLE` and `ALTER TABLE ... ADD COLUMN`.
362
392
-**Identifier restrictions**: Table and column names must match `[A-Za-z_][A-Za-z0-9_]*`.
363
393
-**No concurrent writes**: Use a single-writer model.
364
394
-**Rollback**: Partial support — works with the openpyxl backend when `autocommit=False` (snapshot/restore semantics). The Graph API backend treats rollback as a no-op.
0 commit comments