Opened 5 years ago
Last modified 2 years ago
#30511 closed New feature
AutoField with postgres10/11 as generated identity — at Initial Version
Reported by: | Michael Kany | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Normal | Keywords: | postgres generated identity |
Cc: | Michael Kany | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
We are currently working on a Django / Postgresql 11 project. We needed an adjustment for the postgres module because of its compatibility with .NET Framework and dataset generation.
In postgres 10/11 there is the new feature identity column called GENERATED AS IDENTITY instead of serial.
column_name type GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY [(sequence_option)]
We have created a module based on db.backends.postgres that adds 2 new django model fields. I would like implement the new feature into pyodbc module or new module for postgres 10/11 useful for later versions of django.
Adjustments only in base.py (line 70ff):
data_types = {
'IdentityAutoField': 'integer',
'IdentityBigAutoField': 'bigint',
and schema.py, def column_sql () (line 178ff):
# Primary key / unique outputs
if field.primary_key:
sql + = "PRIMARY KEY"
if field.get_internal_type () in ("IdentityAutoField", "IdentityBigAutoField"):
sql + = "GENERATED ALWAYS AS IDENTITY"
elif field.unique:
sql + = "UNIQUE"
I can also send our code
best regards
Michael Kany