Point type in sqlalchemy?

You can use geoalchemy2 whis is an extension to sqlalchemy and can be used with flask-sqlalchemy too.

from sqlalchemy import Column
from geoalchemy2 import Geometry
# and import others

class Shop(db.Model):
    # other fields
    coordinates = Column(Geometry('POINT'))

You can extend UserDefinedType to achieve what you want.

Here's an example I found that gets pretty close to what you want subclassing UserDefinedType

Note that Mohammad Amin's answer is valid only if your point is intended to be a geographic point (latitude and longitude constraints). It doesn't apply if you want to represent any point on a plane. Also, in that case you would need to install the PostGIS extension, which I encourage if you are working with geography points as it provides a lot of utlities and extra functions.