skip to Main Content

I am using flask_sqlalchemy and I want to define column prompts to be an array which accepts values of any data type, particularly string or json.

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

class PreannotationPrompts(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique = True)
    type = db.Column(db.String(100))
    '''
    Example of values prompts should hold
    [
         {"key": "value", "key2": []},
         'Hello',
         {"key": "value", "key2": []},
         'Hi'
    ]
    '''
    prompts = db.Column(db.String(1000))  # How to define ? 

How can I define prompts column appropriately in this case?

2

Answers


  1. SQL is a typed language, you you cannot have a column that accepts "any type". You should rethink your data model. Avoid arrays as column data types.

    Login or Signup to reply.
  2. If you anticipate fluid model within a column you probably should use JSONB type. You can store a dict or an array without a priori declared element’s type.

    from sqlalchemy.dialects.postgresql import JSONB
    
    prompts = db.Column(JSONB, default=list) 
    

    However, using a schemaless column (like JSONB) can indicate that you have a problem with properly designed data model.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search