def __init__(self, column, _constraint=None, use_alter=False, name=None,
                 onupdate=None, ondelete=None, deferrable=None,
                 initially=None, link_to_name=False, match=None,
                 **dialect_kw):

        self._colspec = column
        if isinstance(self._colspec, util.string_types):
            self._table_column = None
        else:
            if hasattr(self._colspec, '__clause_element__'):
                self._table_column = self._colspec.__clause_element__()
            else:
                self._table_column = self._colspec

            if not isinstance(self._table_column, ColumnClause):
                raise exc.ArgumentError(
                    "String, Column, or Column-bound argument "
                    "expected, got %r" % self._table_column)
            elif not isinstance(
                    self._table_column.table, (util.NoneType, TableClause)):
                raise exc.ArgumentError(
                    "ForeignKey received Column not bound "
                    "to a Table, got: %r" % self._table_column.table
                )

        # the linked ForeignKeyConstraint.
        # ForeignKey will create this when parent Column
        # is attached to a Table, *or* ForeignKeyConstraint
        # object passes itself in when creating ForeignKey
        # markers.
        self.constraint = _constraint
        self.parent = None
        self.use_alter = use_alter
        self.name = name
        self.onupdate = onupdate
        self.ondelete = ondelete
        self.deferrable = deferrable
        self.initially = initially
        self.link_to_name = link_to_name
        self.match = match
        self._unvalidated_dialect_kw = dialect_kw
Construct a column-level FOREIGN KEY.
dataset/ETHPy150Open RoseOu/flasky/venv/lib/python2.7/site-packages/sqlalchemy/sql/schema.py/ForeignKey.__init__