Hey Guys !

So as the title says it all , I'm try to do the above , but I'm getting SQL 
Syntax error when I'm using db.Index to create a unique index . I've tried 
all the solutions but nothing seems to work.

P.S : I'm using Flask-SQLalchemy with MySQL. 

Here's my table

class FinGoods(db.Model):
    id = db.Column(db.Integer , primary_key = True)
    product_category = db.relationship('FinCat' ,cascade="all,delete", 
secondary='cat_goods' ,         
                   backref='cat_goods' , lazy = 'joined')
    fabric_combo = db.relationship('FabComb' ,cascade="all,delete", 
secondary='comb_goods' , 
               backref='comb_goods' , lazy = 'joined')
    print_tech = db.relationship('PrintTech' ,cascade="all,delete", 
secondary='tech_goods' , 
             backref='print_goods' , lazy = 'joined')
    design = db.relationship('FinDes' ,cascade="all,delete", 
secondary='des_goods' , 
         backref='des_goods' , lazy = 'joined')
    uom = db.relationship('Uom' ,cascade="all,delete", secondary='uom_goods' , 
backref='uom_goods' , 
      lazy = 'joined')
    alt_name = db.Column(db.String(200))
    gen_name = db.Column(db.String(100))

    def get_gen_name(self):
        product_category = self.product_category
        fabric_combo = self.fabric_combo
        print_tech = self.print_tech
        design = self.design
        uom = self.uom
        display_name = "{} / {} / {} / {}".format(product_category[0].cat, 
fabric_combo[0].comb,         
    print_tech[0].tech, design[0].des)
        return display_name


db.Table('cat_goods',
    db.Column('cat_id' , db.Integer , db.ForeignKey('fin_cat.id' , 
ondelete='SET NULL' )),
    db.Column('goods_id' , db.Integer , db.ForeignKey('fin_goods.id' , 
ondelete='SET NULL'))
)

db.Table('comb_goods',
    db.Column('comb_id' , db.Integer , db.ForeignKey('fab_comb.id' , 
ondelete='SET NULL' )),
    db.Column('goods_id' , db.Integer , db.ForeignKey('fin_goods.id' , 
ondelete='SET NULL'))
)
db.Table('tech_goods',
    db.Column('tech_id' , db.Integer , db.ForeignKey('print_tech.id' , 
ondelete='SET NULL' )),
    db.Column('goods_id' , db.Integer , db.ForeignKey('fin_goods.id' , 
ondelete='SET NULL'))
)
db.Table('des_goods',
    db.Column('des_id' , db.Integer , db.ForeignKey('fin_des.id' , 
ondelete='SET NULL' )),
    db.Column('goods_id' , db.Integer , db.ForeignKey('fin_goods.id' , 
ondelete='SET NULL'))
)
db.Table('uom_goods',
    db.Column('uom_id' , db.Integer , db.ForeignKey('uom.id' , ondelete='SET 
NULL' )),
    db.Column('goods_id' , db.Integer , db.ForeignKey('fin_goods.id' , 
ondelete='SET NULL'))
)

Here's the code for the unique Index :

db.Index('fin_goods_unq', cat_goods.cat_id, 
fin_goods.fabric_combo,fin_goods.print_tech , fin_goods.design, fin_goods.uom, 
unique=True)

But it's throwing a SQL Syntax error , which I'm unable to wrap my head 
around.

sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1064, "You 
have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near '= raw_fab_id AND id = 
cat_id, id = raw_fab_id AND id = comb_id, id = raw_fab_id ' at line 1")
[SQL: CREATE UNIQUE INDEX raw_goods_unq ON raw_fab_main (id = raw_fab_id AND id 
= cat_id, id = raw_fab_id AND id = comb_id, id = raw_fab_id AND id = const_id, 
id = raw_fab_id AND id = proc_id, id = raw_fab_id AND id = width_id, id = 
raw_fab_id AND id = dye_id)]
(Background on this error at: http://sqlalche.me/e/f405)

Thanks!

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/28cf95ee-8cf8-48b5-a120-0ffcad64368d%40googlegroups.com.

Reply via email to